FFmpeg去除負幀

FFmpeg去除負幀

我正在使用 FFmpeg 處理開始時間為負的影片:

$ ffmpeg -i test.mp4 -ss 0 out.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp41mp42isom
    creation_time   : 2018-01-03 11:35:13
  Duration: 00:00:06.16, start: -1.238906, bitrate: 1425 kb/s
...
Output #0, mp4, to 'out.mp4':
...
frame=  222 fps=0.0 q=-1.0 Lsize=     166kB time=00:00:07.44 bitrate= 182.9kbits/s

有什麼辦法可以在0時間剪切影片嗎?即輸出的持續時間應為 6.16 而非 7.74。我嘗試過設定-avoid_negative_ts所有不同的值。顯然,我可以手動讀取負值並使用正確的偏移量再次運行它-ss,但我正在尋找自動解決方案。

答案1

通常,-ss輸入選項會作為從檔案開頭的相對偏移量。由於您的開始時間是負數且提前未知,因此您可以啟用seek_timestamp尋找絕對時間戳記值。

ffmpeg -seek_timestamp 1 -ss 0 -i test.mp4 out.mp4

相關內容