如何将webm文件解码为原始pcm?

时间:2019-08-29 00:21:51

标签: c++ voice webm opus

整个过程如下。 客户端以某种格式(webm或wav)记录语音持续一段时间(例如5秒钟) 然后使用websocket将其发送到服务器。

服务器收到了几个数据包(每个数据包大小为4096bytes),每个数据包都发送给opus解码器。 但是Opus解码器返回无效的数据包错误。

服务器在ubuntu中使用c ++(使用libwebsocket和libopus库)进行编码。

有人可以帮我怎么做吗? 一般程序或一些示例代码都可以 很难找到信息或社区。

谢谢

1 个答案:

答案 0 :(得分:0)

Opus解码器可能需要Ogg Opus容器文件。如果您使用的是WebM,则可以提取编码的音频页面,并将其传递给不依赖于Ogg容器的原始Opus解码器。您还可以看到ffmpeg项目如何将WebM Opus文件解码为PCM

客户端可以发送Ogg Opus文件而不是WebM Opus文件吗?有一个用C编写的基于块的解码器,可以非常快速地解码Ogg Opus文件。它用于WebAssembly,但是C代码不依赖于WASM。参见opus_chunk_decoder.c

https://github.com/AnthumChris/opus-stream-decoder/tree/master/src