我目前正在使用 libopus为了对我拥有的一些音频进行编码。
在查阅有关如何使用编码器的文档时,编码函数接受的参数之一是 max_data_bytes
,这是一个 opus_int32
,具有以下文档:
为输出负载分配的内存大小。可用于对即时比特率施加上限,但不应用作唯一的比特率控制
不幸的是,我无法从这个定义中得到太多关于如何设置上限以及该参数与比特率的关系的信息。我尝试查阅提供的一些示例,例如 this或this但两者都将参数定义为某个常量,但没有太多信息。
有人可以帮助我理解这个值的定义,以及我可能有兴趣使用什么数字吗?谢谢!
最佳答案
取决于编码器版本和编码参数。
在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/