我用 Ardour 录制并混录了一张 CD 的自制音乐,然后愚蠢地将所有歌曲都导出为 48 kHz 和 24 位。现在我需要 44.1 和 16 位,以便 CDBaby 将其交给 iTunes、Spotify 等。我以为他们会想要 mp3,但没有。我想我会做类似的事情:
ffmpeg -i song.wav
并使用以下方式设置新的采样率:
-ar 44100
但是我怎样才能将比特率降低到 16?我找不到任何提示...大多数 ffmpeg 问题都是关于视频的,我迷失在第一个可能的线索中,然后又迷失在第二个可能的线索中。
答案1
使用默认
WAV 输出的默认设置是 16 位编码器 ( pcm_s16le
),因此您需要做的就是:
ffmpeg -i input.wav -ar 44100 output.wav
或者手动声明一个16位编码器
ffmpeg -i input.wav -c:a pcm_s16le -ar 44100 output.wav
- 查看编码器列表
ffmpeg -encoders
- 查看编码器支持哪些音频样本格式(位深度)
ffmpeg -h encoder=pcm_s16le
或者手动设置音频采样格式
带有-sample_fmt
选项。
ffmpeg -i input.wav -sample_fmt s16 -ar 44100 output.wav
- 查看音频样本格式(位深度)列表
ffmpeg -sample_fmts
或者使用格式过滤器
ffmpeg -i input.wav -af "aformat=sample_fmts=s16:sample_rates=44100" output.wav
答案2
这与样本格式有关吗?
要查看选项:ffmpeg -sample_fmts
对于你来说,这将是这样的,
ffmpeg -i input -sample_fmt s16 -ar 44000 output
答案3
我认为 SoX 可能是完成这项工作的更好工具。我创建了一个采样率为 48.0 kHz、位深度为 24 位的样本文件,我在相关部分中用箭头标记:
andrew@ilium~/tmp$ mediainfo luckynight_48_24.wav
General
Complete name : luckynight_48_24.wav
Format : Wave
File size : 16.6 MiB
Duration : 1 min 0 s
Overall bit rate mode : Constant
Overall bit rate : 2 304 kb/s
Audio
Format : PCM
Format settings : Little / Signed
Codec ID : 00000001-0000-0010-8000-00AA00389B71
Duration : 1 min 0 s
Bit rate mode : Constant
Bit rate : 2 304 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz <-----
Bit depth : 24 bits <-----
Stream size : 16.6 MiB (100%)
现在我不是 SoX 大师,但以下命令确实将上述文件转换为 44.1 kHz 的采样率和 16 位的位深度(如您所要求的):
sox luckynight_48_24.wav -r 44100 -b 16 luckynight_44_16.wav
这完成了以下工作,并且我再次在相关部分中用箭头标记:
andrew@ilium~/tmp$ mediainfo luckynight_44_16.wav
General
Complete name : luckynight_44_16.wav
Format : Wave
File size : 10.2 MiB
Duration : 1 min 0 s
Overall bit rate mode : Constant
Overall bit rate : 1 411 kb/s
Audio
Format : PCM
Format settings : Little / Signed
Codec ID : 1
Duration : 1 min 0 s
Bit rate mode : Constant
Bit rate : 1 411.2 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz <-----
Bit depth : 16 bits <-----
Stream size : 10.2 MiB (100%)
这正是你所追求的:)