FFmpeg生成HDS流
1、HDS参数说明
ffmpeg -h muxer=hds
Muxer hds [HDS Muxer]:
Default video codec: h264.
Default audio codec: aac.
HDS muxer AVOptions:
-window_size <int> E........ number of fragments kept in the manifest (from 0 to INT_MAX) (default 0)
-extra_window_size <int> E........ number of fragments kept outside of the manifest before removing from disk (from 0 to INT_MAX) (default 5)
-min_frag_duration <int64> E........ minimum fragment duration (in microseconds) (from 0 to INT_MAX) (default 1e+07)
-remove_at_exit <boolean> E........ remove all fragments when finished (default false)
如上所示,主要包含四个参数:
- window_size:HDS切片信息窗口大小
- extra_window_size:HDS切片信息窗口之外保留的切片文件个数
- min_frag_duration:最小切片时间
- remove_at_exit:在HDS封装结束时删除所有文件
2、window_size参数控制文件列表大小
./ffmpeg -i 111.mp4 -c copy -f hds -window_size 4 output
如上命令表示,设置历史文件窗口大小为4,也就是说,HDS文件列表中只保存4个文件。命令执行完成后,会生成output目录,目录包含三种文件,具体如下:
- index.f4m:索引文件,主要为F4M参考标准中mainfest相关、Metadata信息等
- stream0.abst:文件流相关描述信息
- stream0Seg1-Frag:相似规则文件切片,文件切片中均为mdat信息
如果不设置window_size参数来限制窗口大小,则使用如下命令:
./ffmpeg -i 111.mp4 -c copy -f hds output
3、extra_window_size参数控制文件个数
ffmpeg -re -i 111.mp4 -c copy -f hds -window_size 4 -extra_window_size 1 output
ffmpeg -re -i 111.mp4 -c copy -f hds -window_size 4 -extra_window_size 3 output
4、其他参数
remove_at_exit参数在FFmpeg退出时会删除所有生成的文件,如果min_frag_duration参数的值设置的比较小并且设置在使用codec copy时不会有效果,则需要在重新编码时将GOP间隔设置的比min_frag_duration时间短即可。