ksvc / KSYMediaPlayer_Android

金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode
http://v.ksyun.com/
Apache License 2.0
855 stars 247 forks source link

对比了几个播放器,唯独你们金山的播放器卡 #215

Open androidTH opened 6 years ago

androidTH commented 6 years ago

http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8相同的地址就是其他播放器不卡,就是你们的播放器卡 mKSYPlayer.setBufferTimeMax(0.0f);//6.5f // mKSYPlayer.setBufferSize(15); // mKSYPlayer.setSpeed(0.8f); // mKSYPlayer.setTimeout(10, 50); 这几个值怎么设置这个视频都卡。

fpzeng commented 6 years ago

是的,如果你的m3u8播放时,没有设置正确的bufferTimeMax,是会导致卡顿。 请阅读wiki: https://github.com/ksvc/KSYMediaPlayer_iOS/wiki/hlsStalledd

dengchu817 commented 6 years ago

这个视频的问题我们已经复现了,会尽快排查问题的

androidTH commented 6 years ago

我已经把setBufferTimeMax()设置按照你们文档的说明设置的。还是播放几分钟就会卡住。还有一个问题这个EXT-X-TARGETDURATION:6是m3u8的url中的时间,你们文档说要更具这个设置setBufferTimeMax(),但是每个url中的这个时间是不一样的,我怎么去动态设置呢?

androidTH commented 6 years ago

@fpzeng 我已经阅读了好几遍,问题就是这个url会卡。其他播放器就不卡。

androidTH commented 6 years ago

@dengchu817 好的,谢谢。等你们的好消息。

dengchu817 commented 6 years ago

@androidTH

line = #EXT-X-VERSION:3
line = #EXT-X-ALLOW-CACHE:NO
line = #EXT-X-TARGETDURATION:3
line = #EXT-X-MEDIA-SEQUENCE:11820
==pls->start_seq_no = 11820
line = 
line = #EXTINF:2.995
line = 1194135.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = #EXTINF:2.982
line = 1194136.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = #EXTINF:2.990
line = 1194137.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = 
line = #EXT-X-VERSION:3
line = #EXT-X-ALLOW-CACHE:NO
line = #EXT-X-TARGETDURATION:3
line = #EXT-X-MEDIA-SEQUENCE:1743
==pls->start_seq_no = 1743
line = 
line = #EXTINF:2.988
line = 1194139.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = #EXTINF:2.975
line = 1194140.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = #EXTINF:2.983
line = 1194141.ts?wsSession=d681801c3e93ebab63a8cf3d-151541035135134&wsIPSercert=7aa8f0214ddf18d82fcafadb5b4dec4c&wsMonitor=-1&wsApp=HLS
line = 

EXT-X-MEDIA-SEQUENCE表示切片列表的第一个切片的序号start_seq_no,一般EXT-X-MEDIA-SEQUENCE只会出现一次,如果没有就默认为0。但是这个m3u8地址里的切片的EXT-X-MEDIA-SEQUENCE会出现比较大的向前、向后的跳动。这就会导致EXT-X-MEDIA-SEQUENCE向后跳时(start_seq_no突然变得很大),之前的切片都会被丢弃;向前跳时(start_seq_no序号变小),循环读取m3u8文件并解析;这都会出现卡顿。

另外:其他播放器能播,在EXT-X-MEDIA-SEQUENCE跳变的时候,其实播放是不连续的,可能有些ts播放了两次,或直接跳过了一些ts 所以这个m3u8应该是有问题的

androidTH commented 6 years ago

@dengchu817 你们的播放器能做到遇到这样的时候可以继续播放吗?其他的播放器是可以的。

dengchu817 commented 6 years ago

如果这样改,可能会对其他m3u8产生影响,所以这个问题主要是修改视频源