SoX 不适用于 Opus 音频文件

Posted

技术标签:

【中文标题】SoX 不适用于 Opus 音频文件【英文标题】:SoX doesn't work with Opus Audio files 【发布时间】:2014-04-14 20:48:25 【问题描述】:

我正在使用 WebRTC 从网页录制输入麦克风,并通过 SoX 进行处理。

问题是,Firefox 录音是 Opus Audio 格式(根据 VLC 媒体信息),在 Ogg 容器中,SoX 不喜欢它: /opt/local/bin/sox FAIL formats: can't open input file `/Users/[...]/public/audio/7a0d13a501.ogg': Input not an Ogg Vorbis audio stream

有没有办法让它与 SoX 一起工作? 还是应该使用其他命令行音频工具?

【问题讨论】:

【参考方案1】:

我最终这样做了(两个都行,不知道哪个最快):

opusdec --force-wav file.ogg - | sox - file.mp3

sox "|opusdec --force-wav file.ogg -" file.mp3

【讨论】:

要使用 opusdec 选项 opus-tool 应该安装:sudo apt-get install opus-tools 我还没有让管道正常工作,但是使用 opusdec 和 sox 也对我有用。在 OSX brew 上,您可以安装带有 opus 支持的 sox,因此不需要额外的步骤。我猜我们需要使用 opus 选项手动重新编译 sox 以获得该行为。【参考方案2】:

你可以在运行 sox 时指定-t opus

    sox -t opus file.ogg out.wav

【讨论】:

我不知道你有什么包,但是 Debian 包失败了:sox FAIL formats: no handler for given file type 'opus' 我用 brew 的最新 sox 在 mac OS(似乎和@ryancey 一样)上对其进行了测试

以上是关于SoX 不适用于 Opus 音频文件的主要内容,如果未能解决你的问题,请参考以下文章

Sox:连接多个音频文件,中间没有间隙

Sox:使音频文件的前 100 毫秒静音,然后淡入

Opus 音频文件到 Wav 转换

合并背景音频文件

使用 SOX 按百分比值减少音频文件的音量

使用 SoX 更改音频文件中某个时间范围的音量级别