我正在使用以下 ffmpeg 命令将多轨 wav 转换为多个单声道音轨:
ffmpeg -i input.wav \
-map_channel 0.0.0 a.wav \
-map_channel 0.0.1 b.wav \
-map_channel 0.0.2 c.wav \
-map_channel 0.0.3 d.wav \
这工作正常但它将通道转换为16位PCM:
...
Stream #0:0 -> #0:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #1:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #2:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #3:0 (pcm_s24le (native) -> pcm_s16le (native))
...
我也尝试过“-sample_fmt pcm_s24le”或“-sample_fmt s32”,但两个参数都无法识别。
如何在不改变位深度的情况下提取多 wav 文件的通道?
答案1
编码器 pcm_s16le 用于您的.wav
输出。此编码器仅支持 s16 样本格式(请参阅ffmpeg -h encoder=pcm_s16le
和ffmpeg -sample_fmts
)。
您可以选择编码器pcm_s24le:
ffmpeg -i input.wav \
-map_channel 0.0.0 -c:a pcm_s24le a.wav \
-map_channel 0.0.1 -c:a pcm_s24le b.wav \
-map_channel 0.0.2 -c:a pcm_s24le c.wav \
-map_channel 0.0.3 -c:a pcm_s24le d.wav