如何将通过webrtc-kinesis流接收的OPUS文件中的数据解码为PCM格式



对于我正在开发的一个应用程序,我需要通过webrtc将音频和视频从web应用程序流式传输到后端。这是使用kinesis webrtc JS sdk完成的,消费者是使用Kineis webrtc JS-sdk的查看器。

我可以获得视频和音频数据。Webrtc现在只支持pcm编码。我的最终目标是使用AWS转录的音频流进行转录。AWS转录仅支持PCM编码。所以我需要将opus数据转换为pcm数据。

我在后端接收的音频数据包大约是每个数据包160字节。当我试图将字节保存到opus文件中并使用";opusdec";我得到以下错误-

WARNING: Hole in data (4 bytes) found at approximate offset 160 bytes. Corrupted Ogg.
WARNING: Hole in data (156 bytes) found at approximate offset 160 bytes. Corrupted Ogg.
ERROR: No Ogg data found in file "sample-000.opus".
Input probably not Ogg.

从后端流式传输的数据具有有效的opus文件,我这么说是因为当我看到aws kinesis控制台媒体播放器来查看流时,视频和音频播放正常。

你能告诉我如何利用后台数据包中的opus流数据吗?我需要能够将其转换为PCM编码并使用aws转录。

AWS转录现在应该支持Ogg Opus文件(见新闻稿(

亚马逊转录支持Ogg和WebM格式文件的OPUS编码音频。

如果音频从头到尾都是一个封装的Ogg Opus文件,您应该能够保存它。您可以通过检查前256个字节并查找";OggS";,这是Ogg页面边界:

$ xxd -l 256 audio.opus

如果音频字节不是Ogg Opus文件并且是未封装的原始Opus数据包,则需要";包装";在保存文件之前,将Opus数据包转换为容器格式(Ogg、WebM等(。

最新更新