(网上赌博新址) 安卓大部分浏览器播放HLS协议直播流会从头开始
在线博彩导航
在线博彩导航
当前位置 : 在线博彩导航 > 网上赌博新址

(网上赌博新址) 安卓大部分浏览器播放HLS协议直播流会从头开始

遇到的问题

HLS直播流在iOS系统中表现正常,

但在安卓使用大部分浏览器(UC浏览器除外)播放ffmpeg生成的HLS直播流都会发生从头播放的问题,

即不管何时播放直播流,都会从直播开头的内容开始播放(生成的第一个直播TS切片,eg:电影开始直播1小时后打开直播,从0分钟看起)。

参考数据

  • 安卓系统:4.0小米2s,4.4华为荣耀6,其他版本未测试

  • 浏览器:默认浏览器、腾讯浏览器

  • 直播方式:ffmpeg获取rtmp流,并用自带segment实时切割为ts片段,命令如下省略了视频流参数

    ffmpeg -re -i rtmp://ipaddress/live/streamname 
    -codec:a libfaac -b:a 96k -af volume=1 -ac 2 -ar 44100 
    -f segment 
    -segment_time 5 
    -segment_list_flags live 
    -segment_list /path/to/m3u8 
    -segment_format mpegts /path/to/ts
  • 生成的m3u8文件如下(实时新增ts列表)

    #EXTM3U
    #EXT-X-VERSION:3 
    #EXT-X-MEDIA-SEQUENCE:0 
    #EXT-X-ALLOW-CACHE:NO 
    #EXT-X-TARGETDURATION:6 
    #EXTINF:5.000278, 
    file0000.ts 
    #EXTINF:5.013356, 
    file0001.ts
  • HLS播放器:Ckplayer+m3u8插件

疑问

不知道其他人有没有碰到这个问题。

新版的FFmpeg已经直接支持了hls格式封装输出,因此使用hls替代segment输出即可解决问题。

  • 使用-f segment输出

m3u8文件中的#EXT-X-MEDIA-SEQUENCE的值一直是0。
ts列表在新增的时候不会把老切片去除。
当然也可能是有参数要设置但没找到。

所以安卓的浏览器请求m3u8文件后,会从第一个ts切片读起,因此造成每次打开都是从头播放。

  • 使用-f hls输出

m3u8文件可根据-hls_list_size参数设置保留几个ts切片。
#EXT-X-MEDIA-SEQUENCE值会根据ts切片序号而自动改变。

所以浏览器请求的m3u8文件,sequence id 和 ts list 都正常,因此可以正常实时直播而不会从头开始。

是你的hls服务端配置有问题
如果m3u8文件里只有当前的视频片段,浏览器怎么从头播放?

栏目列表

广告位

在线博彩导航