如何将异步编码的音频流解码为PCM?

问题描述 投票:0回答:1

我需要实时解码来自 websocket 的异步音频流(最好是 vorbis/opus 编码的 ogg),但我找不到合适的板条箱来帮助我完成这项工作。

几乎每个板条箱都有依赖于

std::io::Read
的同步 API,这不适合这种情况。我能找到的唯一箱子是ogg,但它不会将ogg数据包解码为PCM样本,将其委托给“其他一些箱子,例如lewton”。事实证明,它发出的数据包数据既与
lewton
也不与
symphonia
VorbisDecoder
兼容。

您能给我指出任何异步解决方案吗?

rust audio audio-streaming rust-tokio
1个回答
0
投票

事实证明,

ogg
的异步
PacketReader
可以与
symphonia
VorbisDecoder
成功结合。为此,我们需要使用第一个(id)和第三个(设置)流数据包的内容作为
CodecParameters::extra_data
,同时跳过第二个(注释)。其余的数据包可以送入
VorbisDecoder
。感谢est31
ogg
的作者)给予的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.