将使用 opus_demo 解码的 PCM 文件转换为 WAV

Convert PCM file decoded with opus_demo to WAV

我用 ./opus_demo -e voip 48000 1 8000 -cbr -bandwidth NB -complexity 0 -forcemono speech_orig.wav speech_encoded.bit 从他们的 git repo, ran ./autogen.sh, ./configure, make, and then encoded a sample file from the opus examples page 下载了 Opus 编解码器。

然后我尝试用 ./opus_demo -d 48000 1 speech_encoded.bit speech_48khz.wav 解码它。当我尝试用 VLC 播放它时,它没有播放它(显示播放时间不到一秒,没有 sound/feedback)。

我在虚拟机 (VirtualBox) 上 运行 Ubuntu 14.04 32 位。我发现唯一 link 甚至与我的问题有远程关系的是 this,它与 opus_demo 文件以外的其他东西有关。

这是 opus_demo shell 命令的输出:

$ ./opus_demo -e voip 48000 1 8000 -cbr -bandwidth NB -complexity 0 -forcemono speech_orig.wav speech_encoded.bit
libopus 1.1.1-beta-38-gfc0276f
Encoding 48000 Hz input at 8.000 kb/s in narrowband with 960-sample frames.
average bitrate:               8.000 kb/s
maximum bitrate:               8.000 kb/s
active bitrate:                8.000 kb/s
bitrate standard deviation:    0.000 kb/s
$ ./opus_demo -d 48000 1 speech_encoded.bit  speech_48khz.wav
libopus 1.1.1-beta-38-gfc0276f
Decoding with 48000 Hz output (1 channels)
average bitrate:               8.000 kb/s
maximum bitrate:               8.000 kb/s
bitrate standard deviation:    0.000 kb/s

在此先感谢您的帮助!

解决了!发布我为未来的读者所做的事情,以防有人遇到同样的问题。

问题是我传递给编码器 (opus_demo -e) 的文件是 .wav 文件。编码器严格要求.pcm文件,解码器严格输出.pcm文件。为了将 .wav 文件转换为 .pcm 文件,我为 windows 下载了 ffmpeg,并且 运行 以下命令:

要将 .wav 文件转换为 .pcm 文件:

ffmpeg -i input.wav -f s16le -acodec output.pcm

要将 .pcm 文件转换为 .wav 文件:

ffmpeg -f s16le -ar 48k -ac 1 -i input.pcm output.wav