HLS 流总是在 Android 浏览器中从头开始
HLS streaming always starts from the beginning in Android Browser
问题
HLS 流在 iOS 浏览器中运行良好(实时中流),
但在大多数 Android 浏览器中,流总是从头开始(流开始时的第一个 Ts 文件)。
参考
Android系统:4.0,4.4等..
FFmpeg 命令的详细信息:拉取 RTMP 流,然后使用段将其传输到 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 文件的详细信息
#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.ts4
HLS播放器:ckplayer + m3u8插件
帮助
还有其他人遇到这个问题吗?
正如 Aergistal 在评论中所说。
最新的ffmpeg直接支持hls
。
所以只需使用 -f hls
而不是 -f segment
。
然后问题解决了。
如果我们使用-f segment
#EXT-X-MEDIA-SEQUENCE
的值将始终为 0
。
- 添加最新记录时不会删除以前的 TS 记录。
- 可能还有一些我不知道的参数。
这样 Android 设备将始终从第一个 TS 文件开始。
如果我们使用-f hls
- 我们可以用
-hls_list_size
来定义m3u8文件中TS文件的个数
#EXT-X-MEDIA-SEQUENCE
的值将自动更新。
然后效果很好
问题
HLS 流在 iOS 浏览器中运行良好(实时中流),
但在大多数 Android 浏览器中,流总是从头开始(流开始时的第一个 Ts 文件)。
参考
Android系统:4.0,4.4等..
FFmpeg 命令的详细信息:拉取 RTMP 流,然后使用段将其传输到 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 文件的详细信息
#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.ts4
HLS播放器:ckplayer + m3u8插件
帮助
还有其他人遇到这个问题吗?
正如 Aergistal 在评论中所说。
最新的ffmpeg直接支持hls
。
所以只需使用 -f hls
而不是 -f segment
。
然后问题解决了。
如果我们使用
-f segment
#EXT-X-MEDIA-SEQUENCE
的值将始终为0
。- 添加最新记录时不会删除以前的 TS 记录。
- 可能还有一些我不知道的参数。
这样 Android 设备将始终从第一个 TS 文件开始。
如果我们使用
-f hls
- 我们可以用
-hls_list_size
来定义m3u8文件中TS文件的个数 #EXT-X-MEDIA-SEQUENCE
的值将自动更新。
然后效果很好
- 我们可以用