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