mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 08:08:19 +08:00
fix: loudnorm out of range (#1371)
This commit is contained in:
committed by
GitHub
parent
2817c8f5b1
commit
05636b33c0
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:math' show max, min;
|
||||||
|
|
||||||
import 'package:PiliPlus/models/common/video/audio_quality.dart';
|
import 'package:PiliPlus/models/common/video/audio_quality.dart';
|
||||||
import 'package:PiliPlus/models/common/video/video_quality.dart';
|
import 'package:PiliPlus/models/common/video/video_quality.dart';
|
||||||
import 'package:PiliPlus/utils/extension.dart';
|
import 'package:PiliPlus/utils/extension.dart';
|
||||||
@@ -341,9 +343,18 @@ class Volume {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
String format(Map<String, num> config) {
|
||||||
String toString() =>
|
final lra = max(config['lra'] ?? 11, measuredLra);
|
||||||
'measured_I=$measuredI:measured_LRA=$measuredLra:measured_TP=$measuredTp:measured_thresh=$measuredThreshold';
|
num i = config['i'] ?? targetI;
|
||||||
|
final tp = min(config['tp'] ?? targetTp, measuredTp);
|
||||||
|
final offset = config['offset'] ?? targetOffset;
|
||||||
|
num measuredI = this.measuredI;
|
||||||
|
if (measuredI > 0) {
|
||||||
|
i -= measuredI;
|
||||||
|
measuredI = 0;
|
||||||
|
}
|
||||||
|
return 'LRA=$lra:I=$i:TP=$tp:offset=$offset:linear=true:measured_I=$measuredI:measured_LRA=$measuredLra:measured_TP=$measuredTp:measured_thresh=$measuredThreshold';
|
||||||
|
}
|
||||||
|
|
||||||
bool get isNotEmpty =>
|
bool get isNotEmpty =>
|
||||||
measuredI != 0 ||
|
measuredI != 0 ||
|
||||||
|
|||||||
@@ -747,7 +747,7 @@ class PlPlayerController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static final loudnormRegExp = RegExp('loudnorm=[^,]+');
|
static final loudnormRegExp = RegExp('loudnorm=([^,]+)');
|
||||||
|
|
||||||
// 配置播放器
|
// 配置播放器
|
||||||
Future<Player> _createVideoController(
|
Future<Player> _createVideoController(
|
||||||
@@ -845,7 +845,15 @@ class PlPlayerController {
|
|||||||
if (volume != null && volume.isNotEmpty) {
|
if (volume != null && volume.isNotEmpty) {
|
||||||
audioNormalization = audioNormalization.replaceFirstMapped(
|
audioNormalization = audioNormalization.replaceFirstMapped(
|
||||||
loudnormRegExp,
|
loudnormRegExp,
|
||||||
(i) => '${i[0]}:$volume',
|
(i) =>
|
||||||
|
'loudnorm=${volume.format(
|
||||||
|
Map.fromEntries(
|
||||||
|
i.group(1)!.split(':').map((item) {
|
||||||
|
final parts = item.split('=');
|
||||||
|
return MapEntry(parts[0].toLowerCase(), num.parse(parts[1]));
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)}',
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
audioNormalization = audioNormalization.replaceFirst(
|
audioNormalization = audioNormalization.replaceFirst(
|
||||||
|
|||||||
Reference in New Issue
Block a user