Wav音频文件压缩无法正常工作

7

是否可以在不降低采样率的情况下压缩WAV音频文件?

我有一个256比特率和采样率8000Hz的音频文件。我只想将比特率降低到128/64 kbs。

我尝试将其转换为MP3格式,然后再转回WAV格式: ffmpeg -i input.wav 1.mp3 ffmpeg -i "1.mp3" -acodec pcm_s16le -ar 4000 out.wav 但这也会降低采样率。 ffmpeg -i "1.mp3" -acodec pcm_s16le -ab 128 out.wav具有默认的256比特率。

2个回答

6

PCM(WAV)是未压缩的,因此-b:a/-ab不起作用。

WAV的比特率直接受采样率、声道布局和每个样本的位数影响。


计算PCM / WAV比特率

假设每秒8000个样本,立体声声道布局,每个样本16位:

sample rate × number of channels × bits per sample = bitrate
8000 × 2 × 16 = 256000 bits/s, or 256 kb/s

获取音频信道、采样率和位深度

您可以使用ffmpeg -i input.wav命令查看输出结果,或者使用ffprobe命令获取更简洁的输出:

$ ffprobe -loglevel error -select_streams a -show_entries stream=sample_rate,channels,bits_per_sample -of default=nw=1 input.wav 
sample_rate=8000
channels=2
bits_per_sample=16

修改比特率

使用WAV格式时,比特率不应是一个考虑因素。如果比特率成为问题,则WAV可能不是你的最佳选择。话虽如此,您可以通过以下方式更改比特率:

  • 采样率(-ar
  • 声道数量(-ac
  • 比特深度。对于PCM/WAV格式,比特深度是编码器名称中列出的数字:-c:a pcm_s24le-c:a pcm_s16le-c:a pcm_u8等。请参见 ffmpeg -encoders

以下是128 kb/s的示例(音质可能较差):

ffmpeg -i input.wav -ar 8000 -ac 1 -c:a pcm_s16le output.wav
ffmpeg -i input.wav -ar 8000 -ac 2 -c:a pcm_s8 output.wav

另一种选择是使用无损压缩格式。音质与WAV相同,但文件大小可以显著减小。例如FLAC:
$ ffmpeg -i audio.wav audio.flac
$ ls -alh audio.wav audio.flac
  6.1M audio.flac
   11M audio.wac

1

我通常使用Audacity来完成这个任务。

1) 将wav文件导入到Audacity中。

2) 然后选择“文件”>“导出”。

3) 选择“恒定比特率”,然后从质量下拉菜单中选择所需的比特率。


我没有尝试过使用ffmpeg,但命令应该是:

ffmpeg -i input.wav -ab 64000 output.wav

1
谢谢,我会试一下。我有很多文件要处理...有没有命令行转换器?或者我们如何在Audacity中同时处理多个文件? - Kitcha
是的,Audacity有一个批处理选项叫做Chain。请阅读此页面的“应用于文件”部分:http://manual.audacityteam.org/index.php?title=Apply_Chain - el3ati2
尝试这个:ffmpeg -i input.wav -b 64000 output.wav - el3ati2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接