opus - Libopus 编码器 max_data_bytes 字段使用什么值?

标签 opus

我目前正在使用 libopus为了对我拥有的一些音频进行编码。

在查阅有关如何使用编码器的文档时,编码函数接受的参数之一是 max_data_bytes,这是一个 opus_int32,具有以下文档:

为输出负载分配的内存大小。可用于对即时比特率施加上限,但不应用作唯一的比特率控制

不幸的是,我无法从这个定义中得到太多关于如何设置上限以及该参数与比特率的关系的信息。我尝试查阅提供的一些示例,例如 thisthis但两者都将参数定义为某个常量,但没有太多信息。

有人可以帮助我理解这个值的定义,以及我可能有兴趣使用什么数字吗?谢谢!

最佳答案

取决于编码器版本和编码参数。

在1.1.4中,编码器不合并数据包,上限应为1275字节。对于解码器,如果使用repacketizer,您可以找到高达3*1275的数据包。

在最近的版本中,情况可能会发生变化,我很确定重新打包器已以某种方式合并到编码器中。查看 RFC。

只需将我 1½ 年前的一些笔记粘贴到此处...

//Max opus frame size if 1275 as from RFC6716.

//If sample <= 20ms opus_encode return always an one frame packet.
//If celt is used and sample is 40 or 60ms, two or three frames packet is generated as max celt frame size is 20ms
//in this very specific case, the max packet size is multiplied by 2 or 3 respectively

关于opus - Libopus 编码器 max_data_bytes 字段使用什么值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55698317/

相关文章:

go - 如何在 Golang 中使用字节保存 opus 文件?

ios - 在 iOS 8 中使用 Opus 将 PCMBuffer 编码为 Ogg

ffmpeg - Webm 是否支持封面艺术?

android - 在 Android 上调试 Opus 崩溃

audio - 从.opus转换为.wav

audio - 如何使用 Opus 编解码器的 FEC 功能

javascript - 浏览器中音频 MediaStream 的当前带宽或质量是多少? (WebRTC)

audio - 了解ogg header 格式的规范

c++ - 如何用 C++ 解码 OggOpus 文件?

javascript - 如何从 JavaScript 使用 Opus Codec