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到文件開頭
收集的壓縮參數
M:\bin\ffmpeg.exe -i M:\bin\input.mp4 -preset slower -c:v libx264 -r 30 -crf 28 -c:a copy crf28.mp4
ffmpeg -i input.mp4 -c:v libx264 -s 1280x720 -r 30 -preset medium -g 60 -keyint_min 60 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 1000k -maxrate 1100k -bufsize 1000k -c:a aac -b:a 64k -ac 2 -ar 44100 output.mp4
參考文章 http://ffmpeg.org/pipermail/ffmpeg-devel/2016-August/198357.html
https://streaminglearningcenter.com/wp-content/uploads/2016/11/Cloud_encoder_with_FFmpeg-1.pdf
問題地址 https://trac.ffmpeg.org/ticket/7305
補丁地址 https://patchwork.ffmpeg.org/patch/9653/
http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160827/281eb87c/attachment.obj
推薦工具 https://axiomui.github.io/
https://handbrake.fr/