RTP如何打包H264数据

拿到H264的裸流数据是,一般码流结构是SPS,PPS,I帧,P帧......SPS,PPS,I帧,P帧...........。用RTP打包H264数据时,SPS和PPS可以不发,直接发I帧和P帧数据即可。还要看I帧和P帧有多大,如果小于MTU就直接加RTP包发送就可以,如果大于MTU就得分片了。具体的分片方法可以参考RFC3984中。

  我用的FU-A,分片方式。

  第一个 FU-A 包的 FU indicator 应该是:F = NALU 头中的 F;NRI = NALU 头中的 NRI;Type = 28。FU header 应该是:S = 1;E = 0;R = 0;Type = NALU 头中的 Type。
  第二个 FU-A 包的 FU indicator 应该是:F = NALU 头中的 F;NRI = NALU 头中的 NRI;Type = 28。FU header 应该是:S = 0;E = 0;R = 0;Type = NALU 头中的 Type。
  第三个 FU-A 包的 FU indicator 应该是:F = NALU 头中的 F;NRI = NALU 头中的 NRI;Type = 28。FU header 应该是:S = 0;E = 1;R = 0;Type = NALU 头中的 Type。

  像I帧的数据格式一般是这样的00 00 00 01 65 × × × ×.............................。其中00 00 00 01是用来标识一个帧的,65是NAL unit头部,后面的数据是NAL unit数据。RTP发送的数据是00 00 00 01后面的.注意分片的时候分片单元的数据是从65后开始的,65是NAL unit头部,和分片单元头部有点关系,具体关系我上面已经写的很清楚了。


你可能感兴趣的:(header)