ffmpeg視頻精准剪切


1、導言

參考 微岩 博客 FFmpeg視頻精准剪切

ffmepg剪切視頻,很方便,但是也有很大缺陷:

  • (1) 剪切時間點不精確
  • (2)有時剪切的視頻開頭有黑屏

造成這些問題的原因是ffmpeg無法seek到非關鍵幀上。
以下本文通過一些參數配置盡可能地減輕以上問題

2、基本剪切方法

ffmpeg -i test.mp4 -ss 10 -t 15 -codec copy cut.mp4

參數分析:

-i : source
-ss:start time
-t :duration
-c :video,audio codec

時間格式:

  • x秒
  • HOURS:MM:SS.MICROSECONDS

可以設置輸出視頻的編碼格式

-vcodec xxx
-acodec xxx

把-ss, -t參數放在-i參數之后,是對輸出文件執行的seek操作
輸入文件會逐幀解碼,直到-ss設置的時間點為止,這么操作會很慢,雖然時間點是准確的,但是很容易出現黑屏問題。

3、參數優化

(1)將-ss, -t 參數放在-i參數之前

ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4

對輸入文件執行seek操作,會seek到-ss設置的時間點前面的關鍵幀上。
時間不精確,但是不會出現黑屏

(2)accurate_seek
剪切時間更加精確

ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4

PS:accurate_seek必須放在-i參數之前

(3)avoid_negative_ts
如果編碼格式采用的copy 最好加上 -avoid_negative_ts 1參數

ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy -avoid_negative_ts 1 cut.mp4

4、最終方案

D:\Program Files\ffmpeg\bin\ffmpeg.exe -y -i D:/VideoRec/222.mp4 -ss 1:51 -to 2:16 -c:a copy -vcodec libx264 -keyint_min 2 -g 1  -y D:\VideoRec\20210209165300.mp4
ffmpeg -y -i 源文件 -ss 開始時間點 -to 結束時間點 -c:a copy -vcodec libx264 -keyint_min 2 -g 1  -y 生成的文件 

5、參考文獻

[1] http://trac.ffmpeg.org/wiki/Seeking


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM