http://www.ffmpeg.org/ffmpeg-formats.html
ffmpeg -i xxxxx.ts -hls_time 10 -hls_list_size 10 -f hls xxxx.m3u8
今年特意下载个短视频来测试新版 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