
Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s32, 1152 kb/s
wav ファイルから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 ではそれが正しくフラグ付けされていないようです。
次の 2 つの手順を試してください。
ffmpeg -i KEEP_01.wav -c copy out.wav
ffmpeg -i out.wav output.flac
FFmpeg の FLAC エンコーダーは、16 ビットまたは 24 ビットのサンプル形式にのみエンコードします。後者は、入力と同様に 32 ビットとして保存されます。