我正在尝试将通用音频转换为 BOSS RC-5 循环器接受的特定格式(支持的格式:WAV 44.1 kHz、立体声、32 位浮点),我已经从机器上下载了一个可接受的文件,以下是我可以提取的信息:
$ file 002_1.WAV
002_1.WAV: RIFF (little-endian) data, WAVE audio, IEEE Float, stereo 44100 Hz
$ ffprobe 002_1.WAV
Input #0, wav, from '002_1.WAV':
Duration: 00:00:02.85, bitrate: 2938 kb/s
Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz, 2 channels, flt, 2822 kb/s
我尝试了这个但是没有用(机器无法识别该文件为支持的格式:
ffmpeg -i fanfare.wav -ar 44100 -acodec pcm_f32le output.wav
它生成一个具有相似但不完全相同特征的文件(请注意,缺少 IEEE 以及“2 通道”与“立体声”):
$ file output.wav
output.wav: RIFF (little-endian) data, WAVE audio, stereo 44100 Hz
$ ffprobe output.wav
Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz, stereo, flt, 2822 kb/s
您知道我做错了什么以及如何转换为相同的 002_1.WAV 格式吗?
答案1
这归结为元数据。FFmpeg 强制使用 WAVEFORMATEXTENSIBLE 而不是标准 WAVEFORMATEX 标头来处理每样本 16 位以上的 PCM 数据,并且file
实用程序魔法数据库和/或你的循环器没有解析前一个结构。
现在,这似乎是个错误,因为 MS 允许使用 WAVEFORMATEX 标头描述 32 位浮点数。我会为此发送一个补丁。同时,如果您不介意使用十六进制编辑器,您可以将 更改为FE FF
并查看它是否有效。0x14
03 00