diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 1d95a9de1..d38c43a6e 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -817,6 +817,8 @@ class PlPlayerController with BlockConfigMixin { } } + final Map extras = {}; + // 音轨 final String audioUri; if (isFileSource) { @@ -825,12 +827,12 @@ class PlPlayerController with BlockConfigMixin { : path.join(dirPath!, typeTag!, PathUtils.audioNameType2); } else if (dataSource.audioSource?.isNotEmpty == true) { audioUri = Platform.isWindows - ? dataSource.audioSource!.replaceAll(';', '\\;') - : dataSource.audioSource!.replaceAll(':', '\\:'); + ? dataSource.audioSource!.replaceAll(';', r'\;') + : dataSource.audioSource!.replaceAll(':', r'\:'); } else { audioUri = ''; } - await pp.setProperty('audio-files', audioUri); + if (audioUri.isNotEmpty) extras['audio-files'] = '"$audioUri"'; _videoController ??= VideoController( player, @@ -843,8 +845,7 @@ class PlPlayerController with BlockConfigMixin { player.setPlaylistMode(looping); - final Map? filters; - if (Platform.isAndroid) { + if (kDebugMode || Platform.isAndroid) { String audioNormalization = AudioNormalization.getParamFromConfig( Pref.audioNormalization, ); @@ -867,11 +868,9 @@ class PlPlayerController with BlockConfigMixin { AudioNormalization.getParamFromConfig(Pref.fallbackNormalization), ); } - filters = audioNormalization.isEmpty - ? null - : {'lavfi-complex': '"[aid1] $audioNormalization [ao]"'}; - } else { - filters = null; + if (audioNormalization.isNotEmpty) { + extras['lavfi-complex'] = '"[aid1] $audioNormalization [ao]"'; + } } // if (kDebugMode) debugPrint(filters.toString()); @@ -895,7 +894,7 @@ class PlPlayerController with BlockConfigMixin { videoUri, httpHeaders: dataSource.httpHeaders, start: seekTo, - extras: filters, + extras: extras.isEmpty ? null : extras, ), play: false, ); @@ -915,16 +914,14 @@ class PlPlayerController with BlockConfigMixin { SmartDialog.showToast('视频源为空,请重新进入本页面'); return false; } + String? audioUri; if (!isLive) { if (dataSource.audioSource.isNullOrEmpty) { SmartDialog.showToast('音频源为空'); } else { - await (_videoPlayerController!.platform!).setProperty( - 'audio-files', - Platform.isWindows - ? dataSource.audioSource!.replaceAll(';', '\\;') - : dataSource.audioSource!.replaceAll(':', '\\:'), - ); + audioUri = Platform.isWindows + ? dataSource.audioSource!.replaceAll(';', '\\;') + : dataSource.audioSource!.replaceAll(':', '\\:'); } } await _videoPlayerController!.open( @@ -932,6 +929,7 @@ class PlPlayerController with BlockConfigMixin { dataSource.videoSource!, httpHeaders: dataSource.httpHeaders, start: position.value, + extras: audioUri == null ? null : {'audio-files': '"$audioUri"'}, ), play: true, ); @@ -1069,7 +1067,7 @@ class PlPlayerController with BlockConfigMixin { if (kDebugMode) controllerStream.log.listen(((PlayerLog log) { if (log.level == 'error' || log.level == 'fatal') { - Utils.reportError('${log.prefix}: ${log.text}', null); + Utils.reportError('${log.level}: ${log.prefix}: ${log.text}', null); } else { debugPrint(log.toString()); }