视频或者音频文件都可以转换为wav文件,如果是音频文件那么就是编码格式转变,如果是视频文件,那么就是从视频文件中抽取音频。
如果对wav的channel和sample bits没有什么要求的话,那么很简单:
ffmpeg -i INPUT OUTPUT.wav
ffmpeg看到你的文件后缀就知道你要输出的文件是wav,所以你不用指定它的编码格式。
例如:
ffmpeg -i c:test.mp3 c:test.wav
就是将c盘的test.mp3转换为test.wav文件
如果你查看它的格式你会发现:
sample frequcency: 44100
sample bits: 16bits
channels: 2
这是ffmpeg的默认设置,如果想要改变这些值那么要改变命令格式:
ffmpeg -i INPUT -ac CHANNELS -ar FREQUENCY -acodec PCMFORMAT OUTPUT
这里的CHANNELS 可以为
1和2,
PCMFORMAT 可以
pcm_u8,pcm_u16
FREQUENCY 可以是
8000
11025
22050
44100
例如:
ffmpeg -i D:Testaudiodizi.mp3 -ar 8000 -ac 1 -acodec pcm_u8 d:testaudiodizi.wav
就是输出8000采样率,1个声道,8bits的wav文件。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.
参数:PCMFORMAT
16位应该是为【pcm_s16le】 而不是【pcm_u16】,给后面看的人感受一下。
回复 zhangdaren:
谢谢你的指正。
$ 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
上面是所有ffmpeg所支持的wav的格式