【发布时间】:2014-04-07 21:25:13
【问题描述】:
我想知道是否真的可以使用 Netstream.appendbytes 播放 AAC(ADTS 标头)文件。我说的是以.aac 结尾的文件,而不是 M4A 或 MP4 容器中的 AAC 音频。
我知道 Netstream 无法解析 ADTS 标头等,所以我已经有一个类用于解析数据并返回正确的信息,例如通道、比特率、帧长度等。
将这些放在一起会产生静音: 制作 FLV 标头(+ 附加)->> 制作音频标签标头(+ 附加)->> 现在附加原始/无头 AAC 有效负载(第 1 帧)+ 更新以前的标签大小 ->> 为下一个 AAC 帧制作新的音频标签并附加 ->> 原始/无头有效载荷附加(第 2 帧),依此类推,直到轨道结束。
有人可以澄清一下吗:
在 FLV 标签中,我们放置了额外的字节来指定是 Raw 还是 Sequenced AAC 类型。如果我删除了 7 字节标头并只留下下一帧/SyncWord 上的数据。我假设它是原始的,但无论我选择哪种设置,我都会保持沉默。我是否应该考虑其他任何事情(即取决于类型的附加功能?)
在发送到 Appendbytes 命令的某个时间点,某些数据中是否应该存在 AAC 标头字节?即使我已经将 FLV 标签设置为原始 AAC 音频?
是否所有 AAC 文件每帧都包含 1024 个样本,无论通道如何,还是应该将 1024 乘以通道数?我问是因为我需要这个来进行正确的持续时间计算,并且在测试 MP3 时注意到,如果持续时间或帧长度错误,我会得到静音。
我有很多问题和大量研究(AAC 规范、FLV 规范等),但没有任何帮助,而且网络上有一些令人困惑的信息(他们并不总是从 AS3 的角度说话..)。我想我只需要知道这绝对是可能的,而不是盲目地对抗技术限制
PS:我已经使用 AppendBytes 成功播放了 .MP3 音频文件,现在更改了流程以适应 AAC(即:解析 7 字节标头而不是 4 字节标头等。比 ofcos 更多)。感谢阅读,希望有人能提供帮助。
【问题讨论】:
标签: actionscript-3 flash aac netstream