2012-08-16 203 views

回答

42

wav容器只是爲原始PCM數據添加一個簡單的頭文件。標題包括格式,採樣率和通道數量。由於原始PCM數據不包含此信息,因此您需要在命令行中指定它。選項是在它們應用的文件之前指定的,因此可以使用輸入文件之前的選項指定輸入文件的格式,以及輸入文件之後和輸出文件之前的選項可用於指定所需的輸出格式文件。如果你想在輸出文件中使用相同的位/採樣率,採樣率和通道數,那麼在這種情況下你不需要任何輸出選項; wav容器格式已經由文件擴展名指示。

實施例到原始的PCM轉換爲WAV:

ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav 
  • -f s16le ...符號的16位小端樣本
  • -ar 44.1k ...採樣率44.1kHz的
  • -ac 2 ... 2個通道(立體聲)
  • -i file.pcm ...輸入文件
  • file.wav ......輸出文件
+1

逆向(PCM到WAV)操作怎麼樣? – 2013-07-18 09:26:18

+2

@ mustafa.yavuz:這是PCM-to-WAV操作。 – bos 2016-03-02 18:29:42

+1

@bos,我想@ mustafa.yavuz問的是反向(WAV到PCM)。然後沒有什麼特別的,只需'ffmpeg -i file.wav file.pcm'就可以完成了,因爲轉換所需的所有信息都在wav文件的頭部。 – neevek 2016-04-13 09:48:23

4
ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav 
3

小心RAW數據格式

-f U8是無符號的8位, S16簽署萬一有其他

$ ffmpeg -formats | grep PCM 
DE alaw   PCM A-law 
DE f32be   PCM 32-bit floating-point big-endian 
DE f32le   PCM 32-bit floating-point little-endian 
DE f64be   PCM 64-bit floating-point big-endian 
DE f64le   PCM 64-bit floating-point little-endian 
DE mulaw   PCM mu-law 
DE s16be   PCM signed 16-bit big-endian 
DE s16le   PCM signed 16-bit little-endian 
DE s24be   PCM signed 24-bit big-endian 
DE s24le   PCM signed 24-bit little-endian 
DE s32be   PCM signed 32-bit big-endian 
DE s32le   PCM signed 32-bit little-endian 
DE s8    PCM signed 8-bit 
DE u16be   PCM unsigned 16-bit big-endian 
DE u16le   PCM unsigned 16-bit little-endian 
DE u24be   PCM unsigned 24-bit big-endian 
DE u24le   PCM unsigned 24-bit little-endian 
DE u32be   PCM unsigned 32-bit big-endian 
DE u32le   PCM unsigned 32-bit little-endian 
DE u8    PCM unsigned 8-bit 
0

下面的代碼應該是工作:

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav