ffmpeg优化mp4以及hls参数设置

ffmpeg是开源的音频视频编解码工具
然而默认的参数对MP4不友好,需要自己设置
这里记录一下简单的优化参数

优化MP4使moov atom位于文件开头


moov atom是mp4的索引信息.
浏览器获得moov atom后,可以随机搜索文件位置,让拖动自由
ffmpeg默认是将moov atom放在文件末尾,我们需要前置moov atom
-movflags faststart关键参数
ffmpeg -i input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4

优化HLS自定义切片时间(非定长切片时间)


ffmpeg默认HLS切片时间是2秒. 我们需要实现前5块都是1秒切片时间,剩下的切片时间为5秒一块
下面的代码可以实现(需要为ffmpeg打补丁),具体详情请看末尾参考文章
-hls_init_time 1 -hls_time 5 -hls_flags split_by_time -hls_list_size 0 -hls_allow_cache 1
ffmpeg -i input.mp4 -profile:v baseline -level 3.0 -s 1280x720 -hls_init_time 1 -hls_time 5 -hls_flags split_by_time -hls_list_size 0 -hls_allow_cache 1 -f hls index.m3u8

其他优化


自定义码率/分辨率,使用HTTP2等等,以后收集到再更新
开源软件Handbrake可以使用'Web Optimized'选项,它将移动moov atom到文件开头

参考文章 http://ffmpeg.org/pipermail/ffmpeg-devel/2016-August/198357.html
问题地址 http://trac.ffmpeg.org/ticket/7305
补丁地址 https://patchwork.ffmpeg.org/patch/9653/

发表评论