从 wav 24bits 到 flac 的无损转换

从 wav 24bits 到 flac 的无损转换

是否可以将 wav 文件无损转换 Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s32, 1152 kb/s为 wav 文件?

我尝试使用 ffmpeg: ffmpeg -y -i KEEP_01.wav -acodec flac output.flac 但收到此警告: Conversion will not be lossless. Incompatible sample format 's32' for codec 'flac', auto-selecting format 's16'

我也使用了 sox,但是没有收到警告,所以我不知道转换是否无损。

另外我不太明白我的 ffprobe 输出中 sample_format 和 bits_per_sample 之间的区别:

"streams": [ { "index": 0, "codec_name": "pcm_s24le", "codec_long_name": "PCM signed 24-bit little-endian", "codec_type": "audio", "codec_time_base": "1/48000", "codec_tag_string": "[1][0][0][0]", "codec_tag": "0x0001", "sample_fmt": "s32", "sample_rate": "48000", "channels": 1, "bits_per_sample": 24, "r_frame_rate": "0/0", "avg_frame_rate": "0/0", "time_base": "1/48000", "duration": "0.810667", "bit_rate": "1152000" } ]

答案1

我意识到我正在使用旧版本的 ffmpeg。

我用较新的版本进行了测试,它运行良好。

答案2

您的 PCM 是 32 位存储中的 24 位样本,但 WAV 似乎没有正确标记这一点。

尝试以下两个步骤:

ffmpeg -i KEEP_01.wav -c copy out.wav

ffmpeg -i out.wav output.flac

FFmpeg 的 FLAC 编码器仅编码为 16 位或 24 位样本格式。后者存储为 32 位,就像您的输入一样。

相关内容