当前位置: 代码迷 >> 多媒体/流媒体开发 >> 关于AAC利用RTP传输 怎么用M4A生成VLC可播放的数据
  详细解决方案

关于AAC利用RTP传输 怎么用M4A生成VLC可播放的数据

热度:8137   发布时间:2013-02-26 00:00:00.0
关于AAC利用RTP传输求助 如何用M4A生成VLC可播放的数据
这两天查找了很多帖子和资料。目前我的理解是这样的:

AAC 需要利用LATM格式才能在RTP上传输。
格式是RTP头+AudioMuxElement

AudioMuxElement里面包括StreamMuxConfig + PayloadLengthInfo + PayloadMux

可是我又看到RFC 3016上说可以把StreamMuxConfig的信息写到SDP上减少冗余信息。FFmpeg的代码中只有个AU_header_size+AU_header加原数据的头。

所以我想请教
1 如果按RFC 3016上把StreamMuxConfig的信息写到SDP上。我到现在也没有找到一个完整的StreamMuxConfig的数据结构结构。只是从FAAD里扒出来

typedef struct {
  int inited;
  int version, versionA;
  int framelen_type;
  int useSameStreamMux;
  int allStreamsSameTimeFraming;
  int numSubFrames;
  int numPrograms;
  int numLayers;
  int otherDataPresent;
  uint32_t otherDataLenBits;
  uint32_t frameLength;
  uint8_t ASC[MAX_ASC_BYTES];
  uint32_t ASCbits;
} latm_header;
如果把可以写到SDP的信息从这个结构中剔除,那这个结构怎么拆包呢,数据位都不对了啊?

2 PayloadLengthInfo这个到底是多大?是根据ffmpeg里的au_header + au_header_size 一共4个字节吗?
这里的数值是根据什么计算得来的?是我从M4A里找到的RAW Sample的大小吗(单层+单节目+单帧)?


------解决方案--------------------------------------------------------
就是RTP 头12字节 加上4个字节的au_header + au_header_size 

------解决方案--------------------------------------------------------
这个于时间戳没有关系,说明VLC需要特定的SDP信息,可能是由于SDP中的某些参数设置部队造成的
  相关解决方案