ffmpeg concat 解復用持續時間和入點

ffmpeg concat 解復用持續時間和入點

我有很多 h265 剪輯,全都是六秒長。現在我想用 ffmpeg 將它們串在一起(最好不要重新編碼),但只使用每個剪輯的第二個 2 到 4 的部分。我使用 concat 解復用器執行此操作,但是一旦我指定了入點和持續時間,我的結果就會變得相當隨機。它不會拋出任何錯誤並產生新的剪輯,但長度和入點完全關閉。
由於我的剪輯是h265 並且相當短,我的第一個懷疑是根本沒有可以編輯的關鍵幀,因此我嘗試使用Quicktime Prores 剪輯(幀內編碼)進行相同的操作- 但這給了我類似的奇怪結果。所以我想知道問題是否可能出在其他地方?

這是我的程式碼(從 Python 呼叫):

subprocess.call(['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'concatlist.txt', '-c', 'copy', '-hide_banner', '-loglevel', 'error', output])

這是我的(自動生成的)文字檔案的範例:

file videos_squares/vt_5Hn8lze0G8A.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_J8DuC93hLq0.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_u8twUOpagZs_seg3.mp4
inpoint 2.0
duration 2.0

答案1

若要使用 concat 分離器限制持續時間,請設定outpoint(使用值 inpoint + 預期持續時間)。

duration關鍵字的命名很糟糕,它基本上設定了下一個剪輯的起始時間戳相對於當前剪輯的起始時間戳的偏移量。但它不限制當前剪輯的輸出。

相關內容