HLS 与 FFMPEG

原创
2015/08/14 14:32
阅读数 7.3K

       记得有一次用手机上网看 MP4 ,才知道手机是看不到一般格式的视频的,参考了一些有关流媒体的文章后,渐渐地就缠上了 Ffmpeg ...

       今年特意下载个短视频来测试新版 ffmpeg ,制作流媒体 HLS 虽然成功,但 ffmpeg 却发出错误讯息,说我的流复用器选项过时,个别选项被忽略,无奈,只得到 ffmpeg 网页 看看,原来 ffmpeg 已经不需要【TS流分割器】也能独自将媒体分段(一个简单范例):ffmpeg -i in.nut out.m3u8

       这范例没有设定分段长度: hls_time seconds 默认值是2秒。没有设定播放列表的最大列数: hls_list_size size 默认为5列......其它新旧选项的用法有待测试。

ffmpeg 版本: N-69612-g2fd9ce9,下面是其中一个测试例子:

ffmpeg -i in.nut -codec copy -bsf:v h264_mp4toannexb -ss 00:01:00 -to 00:04:10 -hls_time 9 -hls_list_size 0 -hls_segment_filename 'lj%03d.ts' out.m3u8

-bsf:v h264_mp4toannexb: 视频H.264流过滤, 犹其那类非标准H.264码流格式的视频更需要。

-ss 00:01:00 -to 00:04:10: 截取一分钟长度后的视频并开始分段到四分十秒止。

-hls_time 9: 设定段长度9秒。

-hls_list_size 0: 此项设置为0将包含所有的段。

-hls_segment_filename 'lj%03d.ts': 设置段文件名以lj开始。

out.m3u8 播放列表(自动生成):

如果将 -hls_segment_filename 'lj%03d.ts' 换作 -hls_flags single_file 即所有段文件将存储在一个单一的MPEG-TS文件(out.ts)中。


#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:16
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:14.199633,
lj000.ts
#EXTINF:5.040000,
lj001.ts
#EXTINF:8.480000,
lj002.ts
#EXTINF:9.440000,
lj003.ts
#EXTINF:10.000000,
lj004.ts
#EXTINF:10.000000,
lj005.ts
#EXTINF:8.120000,
lj006.ts
#EXTINF:10.000000,
lj007.ts
#EXTINF:6.920000,
lj008.ts
#EXTINF:14.320000,
lj009.ts
#EXTINF:4.760000,
lj010.ts
#EXTINF:9.960000,
lj011.ts
#EXTINF:10.040000,
lj012.ts
#EXTINF:6.640000,
lj013.ts
#EXTINF:7.440000,
lj014.ts
#EXTINF:9.960000,
lj015.ts
#EXTINF:8.000000,
lj016.ts
#EXTINF:15.480000,
lj017.ts
#EXTINF:6.920000,
lj018.ts
#EXTINF:6.040000,
lj019.ts
#EXTINF:8.200000,
lj020.ts
#EXT-X-ENDLIST


自适流播放列表

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1677946,RESOLUTION=1280x720
lj1280x720.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=707099,RESOLUTION=640x360
lj640x360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=357103,RESOLUTION=320x180
lj320x180.m3u8


展开阅读全文
打赏
0
3 收藏
分享
加载中
怎么使用ffmpeg 解析hls 呢?
使用代码的方式.
2016/07/06 11:08
回复
举报
更多评论
打赏
1 评论
3 收藏
0
分享
返回顶部
顶部