audio - 一种将数据 "mid stream"添加到编码音频的方法(可能使用 AAC)

标签 audio audio-streaming codec aac

有没有办法将无损数据添加到 AAC 音频流中?

本质上,我希望能够每 n 帧注入(inject)“此音频帧应在 XXX 时间播放”。

如果我使用无损编解码器,我想我可以只在流中注入(inject)自己的 header ,并且该数据将是完整的,因为它在输出时需要相同,就像 gzip 不会丢失数据一样。

有任何想法吗?我想我可以在服务器上将数据编码为 AAC block ,并在网络层添加一个时间戳,说明在时间 x 播放以下 AAC block ,但我更愿意想办法将其添加到音频本身。

最佳答案

这实际上是不可能的(除非编写自己的专用编码器),因为 AAC(和 MP3)帧并不是真正独立的。

有一个比特储存器的概念,其中一帧中未使用的带宽可用于稍后可能需要更多带宽来存储更复杂声音的帧。也就是说,第 2 帧和/或第 3 帧可能需要来自第 1 帧的数据。如果您在第 1 帧和第 2 帧之间剪切流并插入替代帧,则对位存储数据的引用会被破坏,并且您会损坏第 2 帧的能力被解码。

有些编码器可以在不使用比特储存器的模式下工作(以质量为代价)。如果在此模式下操作,您应该能够沿帧边界更自由地剪切流。

不幸的是,处理这个问题的最佳方法是在处理原始 PCM 样本时在时域中进行。无论如何,这使您可以更好地控制时间安排,并确保您的流也可以与其他编解码器一起使用。

关于audio - 一种将数据 "mid stream"添加到编码音频的方法(可能使用 AAC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567136/

相关文章:

Android 和声音处理?

audio - 如何在您的网站PHP/Flash上​​播放音频?

iphone - 是否有适用于 iphone 的 ffmpeg 的预编译版本?

javascript - 如何在 Firefox 中从 getStats() API 获取 AudioLevel 和 Codec 值?

stream - MJPEG 流信息

file - 新的音频文件格式

javascript - 创建一个音频元素并在对象文字中赋予它属性

javascript - 如果一个新的音频文件已经在播放,为什么要开始播放? (JS)

amazon-web-services - 如何使用 Node.js 在 AWS Lambda 函数上播放 S3 Bucket 中的音频文件?

audio - 在 Windows 上同时使用核心音频和波形音频