2012-03-28 93 views
113

音頻我想下面的命令從視頻中提取音頻:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3的ffmpeg以從視頻中提取

,但我得到的

libavutil  50.15. 1/50.15. 1 
libavcodec 52.72. 2/52.72. 2 
libavformat 52.64. 2/52.64. 2 
libavdevice 52. 2. 0/52. 2. 0 
libavfilter 1.19. 0/1.19. 0 
libswscale  0.11. 0/0.11. 0 
libpostproc 51. 2. 0/51. 2. 0 
SamplE.avi: Invalid data found when processing input 

輸出誰能幫助嗎?

回答

8

ffmpeg -i sample.avi會給你的文件的音頻/視頻格式信息。確保你有正確的庫配置來解析輸入流。另外,確保文件沒有損壞。

+0

現在,我得到了正確的結果,當我嘗試與.mkv視頻相同的評論。爲什麼它沒有爲.avi工作,是否有任何ffmpeg命令來轉換.avi – user1269669 2012-03-29 15:44:18

+1

AVI或MKV是指容器格式,它可以容納許多不同的音頻/視頻格式。您不想轉換AVI音頻,您正在轉換AVI文件中的音軌,但您尚未指定它。使用上面列出的命令查看AVI文件中的音頻軌道。 如果是MP3,你需要編譯一個MP3庫,如LAME http://lame.sourceforge.net/ – smp 2012-03-29 21:00:07

10

命令行是正確的,並在有效的視頻文件上工作。我會確保你已經安裝了正確的庫來處理mp3,用另一個音頻編解碼器安裝lame o probe。讓你瞭解更多

通常

ffmpeg -formats 

ffmpeg -codecs 

將給予足夠的信息。

2

只是一個猜測:

-ab 192 

應該

-ab 192k 

好像這可能是一個問題,但也許ffmpeg的是足夠聰明的糾正。

+1

有效的評論,我編輯了OP的問題來改變它,但這並沒有改變任何東西(在大多數情況下,這會產生警告)。 – 2014-06-22 10:19:35

1

如果包裝到avi中的音頻不是以mp3格式開頭的,則可能需要指定-acodec mp3作爲附加參數。或者不管你的mp3編解碼器是什麼(在Linux系統上它可能是-acodec libmp3lame)。您也可以通過指定-f mp3將格式強制爲mp3來獲得相同的效果(與平臺無關),但不是所有版本的ffmpeg都支持該開關。你的旅費可能會改變。

208

如果你只是想無需重新編碼提取音頻流只是做:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac 
  • -vn是沒有視頻。
  • -acodec copy說使用相同的音頻流已經在那裏。

讀取輸出以查看它是什麼編解碼器,以設置正確的文件擴展名。

+19

而不是首次運行ffmpeg來檢查它是哪個音頻流,請使用ffprobe input-video.avi – FlorianB 2016-12-02 06:45:12

+1

如果您只從視頻流中提取音頻,則音頻的長度可能會短於視頻的長度。爲確保不會發生這種情況,請使用與ffmpeg相同的呼叫提取音頻和視頻,例如「ffmpeg -i vid.avi -map 0:a audio.wav -map 0:v onlyvideo.avi – BlenderBender 2017-08-11 14:01:32

+0

這對我有用 – Sam 2017-10-20 01:40:44

62

使用-q:a對可變比特率編碼來自AVI的高質量MP3。

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 

如果你想從視頻中提取音頻的一部分使用-ss選項來指定起始時間戳和-t選項,從3分鐘指定編碼持續時間,例如和中5秒45秒

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 
  • 時間戳需要在HH:MM:SS.xxx格式或秒。

  • 如果您未指定-t選項,它將結束。

+0

以下是'-q:a'值的指南:https://trac.ffmpeg .org/wiki/Encode/MP3 Zero是最高質量的VBR設置,通常會導致CBR範圍上限的平均比特率(其中320 kbit/s是最大值,可能稍微超過了無損壓縮變得更合適)。 – 2016-09-15 08:32:16

3

爲了編碼mp3音頻ffmpeg.org示出了以下示例:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3 

我只由與所述視頻文件名替換input.wav提取從視頻音頻。 2表示190kb /秒。您可以在我上面的鏈接中看到其他質量級別。

0

使用-b:a而不是-ab因爲-ab已過時。請確保您的輸入文件路徑正確。

從視頻中提取音頻我已經使用下面的命令,它的工作正常。

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath}; 

這裏,

-y

覆蓋輸出文件沒有要求。

-i

的ffmpeg從輸入「文件」

-vn

禁用視頻記錄

-ar

任意數量由-i選項指定的讀取設置音頻流的採樣率(如果編碼的話)

-ac

設置音頻通道的數量。

-b:一

設置音頻比特率

-f

格式

退房this用於在github我的完整樣本ffmpeg的Android項目。