ffmpeg 將 mp4 檔案分割成多個片段…在第一個片段之後,音訊不同步

ffmpeg 將 mp4 檔案分割成多個片段…在第一個片段之後,音訊不同步

Nb:我錯了問了這個問題在堆疊溢位

我使用了 ffmpeg 命令列,如圖所示這個問題長時間完美分割MKV檔。現在我有一些想要分割的 MP4 文件,起初它似乎可以工作,但是第一個片段之後的每個後續片段的音訊都不同步!並增加了幾秒鐘。

我嘗試過強制關鍵幀(我在其他一些網站上找到的建議),但這沒有幫助。

我完全嘗試了一個不同的程式(Avidemux),它能夠以正確的輸出分割文件,但速度慢得多,需要 3 分鐘以上,而使用 ffmpeg 則需要不到 2 秒。使用 Avidemux,我能夠確定要分割的 i 幀的確切位置,因此我認為這可能是同步問題,我嘗試了該確切位置(即 00:12:17.111 而不是 00:12:16 或無論如何)但這也沒有幫助。

ffmpeg 是否缺少一個選項,可以使其在分割時正確地將音訊同步到視訊?

請注意:我使用的是 2013 年版本的 ffmpeg。我剛剛將其更新到最新的 2.6,但問題仍然存在。

答案1

從文件中可以看出,-ss 標誌會根據它在命令中的位置執行不同的操作

-ss 位置(輸入/輸出) 當用作輸入選項(在 -i 之前)時,請在此輸入檔案中尋找位置。請注意,在大多數格式中不可能精確查找,因此 ffmpeg 將查找位置之前最近的查找點。當轉碼和 -accurate_seek 啟用(預設)時,搜尋點和位置之間的額外段將被解碼並丟棄。當進行流複製或使用-noaccurate_seek時,它將被保留。

當用作輸出選項(在輸出檔案名稱之前)時,解碼但丟棄輸入,直到時間戳到達位置。

位置可以以秒為單位或以 hh:mm:ss[.xxx] 形式。

因此,根據您自己的答案,第一個命令將邏輯應用於輸出,第二個命令將其應用於輸入

答案2

我不確定我明白為什麼,但問題是參數的順序。

在連結的範例中,命令如下:

ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:30:00 -t 00:30:00 output2.avi

當然,我使用的是 mp4 而不是 avi,但除此之外,我完全按照上面輸入的命令,並且(使用 mp4)我得到了不同步的音訊結果。我不小心偶然發現了這個“修復”......如果我這樣輸入命令:

ffmpeg -ss 00:30:00 -i input.mp4 -vcoded copy -acodec copy -t 00:30:00 output2.mp4

我沒有得到同步問題。為什麼?不知道。但它有效。我已經嘗試了幾次來確認...僅更改參數順序即可糾正問題。

相關內容