1

我正在尝试将打包在 3gpp 中的 AAC-LC 数据编码为 RTP。我已经通过了 rfc 3640,但我仍然不知道从哪里开始。我将在 AAC 数据中准确找到什么?如果我没记错的话,前 40 个字节将是 MP4 标头,但之后会发生什么,我在哪里可以找到它的定义?为了构建 RTP 有效负载,我必须包含 AU 标头部分,但我不知道它们是否已包含在 AAC 数据中并且我无法在任何地方找到它。

取出 mp4 标头后,我有以下数据:

00 00 14 03 E9 1C 00 00 14 03 E9 1C

这是 AU 标头吗?我如何解释这些数据?

另一个问题,AAC-LC 和 AAC-lbr 之间有什么关系...我的意思是,我知道第一个代表低复杂度,第二个代表低比特率,但它是一样的吗?一个包括另一个?

在此先感谢,我真的是 AAC 的新手,我很迷茫!

4

1 回答 1

1

我正在尝试做相反的事情,即解码 RTP AAC 流,所以到目前为止我发现的一些参考资料可能对您有用:

http://www.rfc-editor.org/rfc/rfc3016.txt

这描述了 rtp 结构。我在阅读我的流时发现,RTP 数据包周围还有一个帧头,长度为 2 个字节:

https://www.rfc-editor.org/rfc/rfc4571

最重要的是,我发现了一个额外的 2bytes 0x24 0x00 帧 - 仍然不知道这是怎么回事,但我想我会让你知道你可能还需要重新创建它。

可悲的是,似乎很多有趣的规格都是“付费观看”。虽然我确实从这个博客中找到了一些有用的信息:

http://thompsonng.blogspot.com/2010/03/rfc-3640-for-aac.html

关于你的另一个问题,我有 AAC-hbr 显然也是 AAC-LC,尽管我也没有找到公开可用的规格。

您的 AU 标头看起来与我所拥有的有点相似:

0x00 0x00 0x01 0xB6 0x55 0x60 0x63 0xFF 0xFF 0x7A 0x7D 0xD5 0xF7 0xB7 0xA7 0xDF

虽然我期望前 16 位是标题的长度,但和你一样,我不太确定我在看什么......

无论如何,我希望其中一些有所帮助。

于 2012-05-22T15:04:15.320 回答