使用 ffmpeg 精確剪切影片

使用 ffmpeg 精確剪切影片

我想使用 ffmpeg 來剪切視訊以進行機器學習。

我如何確保如果我以 25fps 剪切(例如)1 秒的視頻,這將提供恰好 25 幀的同步音頻和視頻?

我已經看到 ffmpeg 在剪切時尋找關鍵幀,選擇最近的一個。我遇到了麻煩,因為它生成負時間戳並用複製的幀填充剪切視頻的末尾。

據我所知,元數據不顯示真實的 fps 等。

那麼,透過與音訊串流對齊的確切數量的幀來獲得精確剪輯的管道是什麼?

謝克斯

答案1

根據影片的編解碼器和容器,這可能需要一些違反直覺的步驟:許多編解碼器根本不直接允許隨機入點和出點。

  • 首先,您需要剪切視訊(暫時忽略音訊),最好使用-ss inpoint-pix_fmt yuv420p -an -f yuv4mpegpipe -frames:v 25管道到x264ffmpeg 的任一或另一個實例中來完成。事實證明,這是一種以幀精確方式剪切視訊串流的可靠方法。
  • 對於音頻,最簡單的方法是轉換為-c:a pcm_s16le“-f s16le”,然後在檔案層級操作結果以包含來自正確偏移量的正確位元組數。
  • 如果需要,最後ffmpeg一次可以壓縮音頻,或者只是將其混合到視頻中。由於原始 PCM 不包含時間戳,因此不存在非同步的可能性。

事實證明,這是一種可靠的方法,可以將來自可疑來源的影片(即來自某些廣告商的商業剪輯)放入高度監管的線性串流(即電視頻道)中,而不會引入任何人工製品。

相關內容