
我有一個視頻文件,video.mp4
.時長18分23秒。我正在尋找提取僅音訊從此影片中,並根據影片中的音訊創建盡可能高品質的 MP3。
有些谷歌引導我到這個指令:ffmpeg -i video.mp4 audio.mp3
問題是,這個命令雙打輸出音訊的長度(持續時間為 36 分 46 秒)。它循環音軌一次,因此輸出包含整個 18 分 23 秒的音頻,然後立即重新開始 18 分 23 秒的音頻。
更多的 googlefu 引導我找到這個標誌:-write_xing 0
來自這個問題,但即使使用該標誌,它仍然會循環播放音訊。
編輯:額外的 googlefu 和我似乎認為它與 2 個音訊通道有關(也許在通道 1 之後立即循環通道 2,而不是合併兩個通道)導致我看到這個標誌:-ac 1
強制它合併立體聲 -> 單聲道。這也不起作用,它仍然輸出一個 38 分 46 秒的 MP3 檔案。
如何從視訊檔案中提取音訊(轉換為 MP3),而不會使持續時間加倍?
答案1
嘗試這個:
ffmpeg -i video.mp4 -vn -sn -c:a mp3 -ab 192k audio.mp3
我已將其用於相同目的,並且它沒有改變音訊的持續時間。另外,(恕我直言)嘗試提高品質只是矯枉過正,但你可以嘗試使用 320k。
答案2
Google 在 ffmpeg Trac 中發現了一些錯誤報告,表明 ffmpeg 命令列上的 -write_xing 0 也可以修復它。長度差異似乎是由於預設寫入的 Xing 資料中的值不正確所致。