audio - 平滑流和AAC低复杂度音频编解码器。数据格式?

标签 audio streaming aac expression-encoder mpeg-4

我正在编写一个平滑流客户端应用程序。在服务器端(带有Media Services扩展的IIS 7)上,我有一堆ISMV和ISMA文件,这些文件是使用Expression Encoder pro 4预先设置的“H.264 IIS平滑流iPhone WiFi”编码的。简而言之,它使用“H.264基准”视频编解码器和AAC-LC音频编解码器。

但是在客户端,我遇到了问题,尤其是音频块。虽然我已经能够理解H.264视频流(本质上是一个以其长度为前缀的原始NAL单元序列,而没有NAL单元“起始代码” 0、0、0、1),但我仍然没有无法破解AAC LC音频流中的内容,即“mdat”(媒体数据盒)原子中的内容。绝对不是MP4容器,那又是什么呢?

我将粘贴从服务器获取的一个AAC-LC片段(仅MDAT部分)的前128个字节(任意选择的数字),以防万一有人从那里弄清楚。

unsigned char data[128] = {
 0x21, 0x09, 0x0A, 0xBF, 0xBF, 0xFF, 0xFF, 0xD5, 0xB1, 0x8D, 0xC4, 0xA1,
 0x18, 0x0D, 0x25, 0xC9, 0x2E, 0x49, 0x2E, 0x10, 0x88, 0x91, 0x10, 0x01,
 0x13, 0x23, 0x2C, 0x36, 0x25, 0x60, 0x6B, 0x94, 0x8C, 0x74, 0xD7, 0x4A,
 0x95, 0xD3, 0x03, 0x91, 0x5B, 0x76, 0xDE, 0x27, 0xC5, 0xB2, 0x4C, 0xCF,
 0xEB, 0x3E, 0xDD, 0xFF, 0x22, 0xAF, 0xC3, 0xF8, 0x60, 0x36, 0x49, 0xBC,
 0xAE, 0x4D, 0x10, 0x31, 0xC6, 0x28, 0x2A, 0xEB, 0xCA, 0x94, 0x51, 0xD8,
 0x61, 0x1B, 0xC6, 0x2A, 0x91, 0x71, 0xE4, 0x8C, 0xF8, 0x19, 0x2C, 0xDE,
 0x71, 0xBB, 0xE3, 0xBD, 0x36, 0xB4, 0x45, 0x37, 0x02, 0x61, 0x48, 0x8E,
 0x19, 0x80, 0xD5, 0x24, 0x97, 0x24, 0x92, 0x44, 0x08, 0x89, 0x12, 0x00,
 0xB3, 0xF8, 0x1E, 0xE2, 0xBD, 0xCD, 0x4E, 0xF7, 0xA9, 0xE2, 0x0E, 0xD8,
 0xEA, 0xFA, 0xCF, 0xDB, 0x4E, 0x69, 0x6F, 0xEE
};

最佳答案

经过长时间的研究和在IIS论坛上收到的this tip,我终于知道了。基本上,这是原始的AAC流,在播放之前,必须先用 header 将其包装起来。最简单和最常见的 header 格式似乎是ADTS,它包括添加7-byte header in front of each sample

关于audio - 平滑流和AAC低复杂度音频编解码器。数据格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304472/

相关文章:

format - 平滑流式传输编解码器私有(private)数据

actionscript-3 - Flash 播放器的自定义音频编码器

用于播放固定频率声音的 Python 库

javascript - 使用提取流音频

apache-flex - 在flex中为麦克风绘制波形,可以吗?

iphone - 为架构 'GCC 4.2' 选择了不支持的编译器 'i386'

objective-c - AQRecorder AAC 在 AVPlayer 中播放

ffmpeg - 当输入 pcm 样本计数不等于 1024 时,如何使用 ffmpeg-API 将重新采样的 PCM 音频编码为 AAC

javascript - HTML:重新加载时音频文件未更新

audio - 合并 2 个文件(音频和视频),在 FFMPEG 中带有 BITC 和水印