Audio
使用 avconv 或 ffmpeg 提取 mp3 不再正常工作
在升級到最新的 Ubuntu 之前,我使用以下命令從 avi 文件中提取 mp3:
$ for x in *.avi; do ffmpeg -vol 100 -ab 160k -ar 44100 -i "$x" "`basename "$x" .avi`.mp3"; done
這行得通。但是從 Ubuntu 12.04 開始,我得到Option sample_rate not found。當我嘗試執行此命令時。如果我省略-ar 44100(或 -sample_rate 44100),它會提取 mp3,但在大多數情況下,提取的 mp3 的長度不再合適。這意味著它們的長度為 43 分鐘或其他內容,儘管 avi 的長度只有 5 分鐘。
ffmpeg 和 avconv 都存在同樣的問題。任何想法如何解決這些問題?
試試這個:
ffmpeg -i "$x" -vol 100 -ab 160k -ar 44100 "`basename "$x" .avi`.mp3"
在選項位於輸入文件前面之前,但看起來您想為輸出文件設置它們。
您是否嘗試過使用其他 avi 文件?文件的音頻軌道可能比影片軌道長(只是猜測)。
您是否嘗試過 -t 選項?
-t duration Restrict the transcoded/captured video sequence to the duration specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.
您可能想嘗試在 ffmpeg 中設置音頻比特流過濾器。我從未嘗試過,但“remove_extra”過濾器聽起來很有希望;)
-absf bitstream_filter Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
您是否考慮過使用像 ExifTool 這樣的命令來查看有關文件的資訊並相應地設置您的選項(甚至可能在您的腳本中解析輸出並使其自動化)?
也許您可以以無損格式提取音頻文件,然後對音頻文件進行轉碼,但必須有比這更好的方法。
如果您對其進行了排序,請發布您所做的事情,因為我對處理我需要解復用的 1000 個影片文件的明顯方法不滿意。我製作了一個與您類似的腳本,但是我想在不浪費任何空間的情況下獲得盡可能高質量的音頻文件。我的轉碼選項肯定是動態的,所以我需要一些比單行更複雜的東西。