diff --git a/lib/http/video.dart b/lib/http/video.dart index 737806c8e..2766f3c06 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -208,6 +208,7 @@ abstract final class VideoHttp { required bool tryLook, required VideoType videoType, String? language, + bool voiceBalance = false, }) async { final params = await WbiSign.makSign({ 'avid': ?avid, @@ -220,7 +221,7 @@ abstract final class VideoHttp { 'fnval': 4048, 'fourk': 1, 'fnver': 0, - 'voice_balance': 1, + 'voice_balance': voiceBalance ? 1 : 0, 'gaia_source': 'pre-load', 'isGaiaAvoided': true, 'web_location': 1315873, diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 83577969d..a4c5898a5 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -856,6 +856,7 @@ class VideoDetailController extends GetxController tryLook: plPlayerController.tryLook, videoType: _actualVideoType ?? videoType, language: currLang.value, + voiceBalance: plPlayerController.enableAudioNormalization, ); if (result case Success(:final response)) { diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 7d3d9fae9..eebbd0519 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -613,6 +613,12 @@ class PlPlayerController with BlockConfigMixin { // offline bool get isFileSource => dataSource is FileSource; + late final _audioNormalization = Pref.audioNormalization; + late final enableAudioNormalization = + Platform.isAndroid && _audioNormalization != '0'; + late final String _audioNormalizationParam = + AudioNormalization.getParamFromConfig(_audioNormalization); + // 初始化资源 Future setDataSource( DataSource dataSource, { @@ -851,12 +857,10 @@ class PlPlayerController with BlockConfigMixin { extras['audio-files'] = '"${Platform.isWindows ? audio.replaceAll(';', r'\;') : audio.replaceAll(':', r'\:')}"'; } - if (kDebugMode || Platform.isAndroid) { - String audioNormalization = AudioNormalization.getParamFromConfig( - Pref.audioNormalization, - ); + if (enableAudioNormalization) { + final String audioNormalization; if (volume != null && volume.isNotEmpty) { - audioNormalization = audioNormalization.replaceFirstMapped( + audioNormalization = _audioNormalizationParam.replaceFirstMapped( loudnormRegExp, (i) => 'loudnorm=${volume.format( @@ -869,7 +873,7 @@ class PlPlayerController with BlockConfigMixin { )}', ); } else { - audioNormalization = audioNormalization.replaceFirst( + audioNormalization = _audioNormalizationParam.replaceFirst( loudnormRegExp, AudioNormalization.getParamFromConfig(Pref.fallbackNormalization), );