ffmpeg編碼mp4視頻,實現剪裁任意片段,播放流暢

問題:在播放剪裁得到的MP4視頻片段時,常常遇到卡頓、音畫不同步等異常情況

原因分析:mp4視頻是使用mpeg-4編碼,壓縮過的視頻。壓縮的基本原理是,將組成視頻的幀分爲兩大類關鍵幀和普通幀。關鍵幀是一張完整的圖片,包含當前幀的完整圖像信息,而普通幀則需要依賴之前的關鍵幀來恢復圖像。這樣子,就可以減小視頻文件的大小,又保持較高的清晰度。

凡是壓縮過的視頻,都包含關鍵幀。這裏的壓縮是指,對原始的視頻文件內容進行編碼,而不是文件級別的壓縮。

在剪裁視頻的時候,開始的時間點如果不是關鍵幀,那麼剪裁到的視頻片段,在播放時就會卡頓。片段視頻的開頭是一些普通幀,解碼器無法找打關鍵幀,無法恢復普通幀的圖像,無法進行正常解碼。

知道了原因,就有解決辦法了,增加關鍵幀的數量,每一幀都是關鍵幀,任意剪裁點,都是關鍵幀,播放就不會卡頓了。

ffmpeg通過keyint_min和gop_size來表示關鍵幀的最小和最大間隔數

具體命令如下

ffmpeg -i input.mp4  -g 1 -keyint_min 1 output.mp4

-g 關鍵幀的最大間隔

-keyint_min 關鍵幀的最小間隔

最大和最小都是1。

可能出現的問題:畫面細微的不清晰

參考:

https://www.cnblogs.com/soief/archive/2013/12/12/3471465.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章