@@ -52,21 +52,13 @@ class MediaKitPlayerAdapter implements UnifiedPlayer {
5252 await pp.setProperty ('force-seekable' , 'yes' );
5353 }
5454 if (_player.platform is NativePlayer ) {
55- if (_player.platform is NativePlayer ) {
56- final native = _player.platform as dynamic ;
57-
58- // 1. 设置协议白名单
59- await native .setProperty ('protocol_whitelist' , 'httpproxy,udp,rtp,tcp,tls,data,file,http,https,crypto' );
60-
61- // 2. 合并设置 demuxer 参数 (用逗号分隔,不要分两次 set)
62- // 这样同时开启了重连和 5 秒超时
63- // Optimized reconnection parameters
64- await native .setproperty (
65- 'demuxer-lavf-o' ,
66- 'reconnect=1,reconnect_at_eof=1,reconnect_streamed=1,reconnect_on_network_error=1,reconnect_on_http_error=4xx,5xx,timeout=5000000' ,
67- );
68- await native .setproperty ('stream-lavf-o' , 'reconnect_streamed=1,reconnect_delay_max=5' );
69- }
55+ await (_player.platform as dynamic ).setProperty (
56+ 'protocol_whitelist' ,
57+ 'httpproxy,udp,rtp,tcp,tls,data,file,http,https,crypto' ,
58+ );
59+ await (_player.platform as NativePlayer ).setProperty ('network-timeout' , '30' ); // 给 mpv 30秒的总容忍时间
60+ await (_player.platform as NativePlayer ).setProperty ('demuxer-lavf-probsize' , '1048576' ); // 减半探测大小
61+ await (_player.platform as NativePlayer ).setProperty ('demuxer-lavf-analyzeduration' , '3' ); // 减少解析时间
7062 }
7163
7264 // Initialize controller based on settings
@@ -141,10 +133,11 @@ class MediaKitPlayerAdapter implements UnifiedPlayer {
141133 }
142134
143135 @override
144- Future <void > setDataSource (String url, Map <String , String > headers) async {
136+ Future <void > setDataSource (String url, List < String > playUrls, Map <String , String > headers) async {
145137 if (_disposed) return ;
146138 await _player.stop ();
147- await _player.open (Media (url, httpHeaders: headers));
139+ Playlist playlist = Playlist (playUrls.map ((playUrl) => Media (playUrl, httpHeaders: headers)).toList ());
140+ await _player.open (playlist);
148141 }
149142
150143 @override
0 commit comments