ffmpeg wav 转为 pcm 并转回(发现无效数据)

ffmpeg wav 转为 pcm 并转回(发现无效数据)

我在使用 ffmpeg 转换 wav 为 pcm 时遇到了问题。

我想转换

A WAV file pcm_s24le, 44100 Hz, mono, s32 (24 bit), 1058 kb/s

A RAW (PCM) file s16le, 48000 Hz, mono

我试过了甚至分两步进行:

ffmpeg -i step0.wav -sample_fmt s16 -ac 1 -ar 48000 step1.wav
ffmpeg -i step1.wav -f s16le -acodec pcm_s16le -ac 1 -ar 48000 step2.pcm

然而,当我尝试验证转换是否正确时:

ffmpeg -i step2.pcm -ar 48000 -ac 1 -f s16le step3.wav

我明白了

step2.pcm: Invalid data found when processing input

我做错了什么?谢谢。

有问题的PS软件及文件:

这是 ffmpeg 版本:

ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20181127
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100

如果是文件,那就是问题所在——我正试图将从http://99sounds.org/drum-samples/

答案1

在 FFmpeg 中,输入选项输入文件。因此,要打开原始 PCM 文件,您需要

ffmpeg -ar 48000 -ac 1 -f s16le -i step2.pcm step3.wav

打开具有容器格式(例如 wav)的文件时这不是问题,因为这些信息是容器标题的一部分。

相关内容