【问题标题】:How to decode the data from OPUS files received though the webrtc kinesis stream into PCM format?如何将通过 webrtc kinesis 流接收的 OPUS 文件中的数据解码为 PCM 格式?
【发布时间】:2021-01-23 14:34:56
【问题描述】:

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

我能够获取视频和音频数据。 Webrtc 现在只支持 pcm 编码。我的最终目标是通过 AWS transcribe 使用音频流进行转录。 AWS transcribe 仅支持 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 控制台媒体播放器查看流时,视频和音频正在正常播放。

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

【问题讨论】:

    标签: amazon-web-services webrtc amazon-kinesis ogg opus


    【解决方案1】:

    AWS Transcribe 现在应该支持 Ogg Opus 文件(请参阅 press release

    Amazon Transcribe 支持 Ogg 和 WebM 格式文件的 OPUS 编码音频。

    如果音频从头到尾都是一个封装的 Ogg Opus 文件,您应该可以保存它。您可以通过检查前 256 个字节并查找“OggS”(即 Ogg 页面边界)来验证这一点:

    $ xxd -l 256 audio.opus

    如果音频字节不是 Ogg Opus 文件并且是未封装的原始 Opus 数据包,您需要在保存文件之前将 Opus 数据包“打包”成容器格式(Ogg、WebM 等)。

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 2013-06-06
      • 2018-10-12
      • 2020-01-01
      • 2021-09-11
      • 2021-09-02
      • 2015-07-25
      • 2017-08-22
      相关资源
      最近更新 更多