0

当音频编解码器是 Opus 时,一些额外的参数对于我们的集成非常重要。

有没有办法让编解码器延迟,寻求预卷和编解码器私有?

当 SB_API_VERSION 不小于 SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER 时,Opus 的“编解码器私有”已被传递到右舷。

由于我不太确定音频样本是否使用“编解码器延迟”和“搜索预卷”进行了预处理,音频解码器是否不需要使用它们?

4

1 回答 1

0

Opus 元数据存储在 AudioDecoderConfig::extra_data() 并通过 SbMediaAudioHeader::audio_specific_config 传递到 SbPlayerCreate()。您可以使用类似于“media/filters/opus_audio_decoder.cc”中的 ParseOpusHeader 函数的代码来解析它。

不幸的是 |audio_specific_config| 是 COBALT_9 中 8 个字节的数组,缺少 Opus 元数据的额外字节。对此有几个解决方案: 1. 删除对 Opus 的支持,因为根据 2017 年的要求,它是可选的。请改用 aac。2. 使用不需要元数据的 Opus 解码器。3. 等到COBALT_11 发布,|audio_specific_config| 的大小限制在哪个版本 已移除。但根据您的 2017 年发布时间表,这可能不可行。4. 将 SbMediaAudioHeader::audio_specific_config 的大小增加到更大的数字(比如 1024)。这将使您未来的变基变得更加困难。

于 2017-05-26T21:22:55.267 回答