标签:
RTSP数据流简介:
RTP_HEADER payloadtype = 数据类型(H264 、G711_A、G711_U、MPEG.......);
timeStamp = 当前包的时间戳;
version = 2;
sequenceNumber = 包序号,递增+1;
FU_HEADER start_bit = 1、第一个包,需要加上RTP_START_CODE + (FU_HEADER.nri << 5) | (FU_HEADER.forbidden_zero_bit << 6) | FU_HEADER.type;
音频数据:每个包前加上RTP_AUDIO_CODE;
class RTSP_HEADER
{
public byte dollar; /* 8, $:dollar sign(24 decimal) */
public byte channelid; /* 8, channel id */
public short payloadLen; /* 16, payload length */
}
class RTP_HEADER
{
public byte csrccount;// 4位Bit;
public byte extension;// 1位Bit;
public byte padding;// 1位Bit;
public byte version;// 2位Bit;
public byte payloadtype;// 7位Bit;
public byte marker;// 1位Bit;
public short sequenceNumber;
public long timeStamp;
public int ssrc;
}
class NALU_HEADER
{
public byte type;// :5位Bit;
public byte nri;// :2位Bit;
public byte forbidden_zero_bit;// :1位Bit;
}
class FU_HEADER
{
public byte type;// :5位Bit; //和原始数据中nalu中的type一样
public byte reserve_bit;// :1位Bit; //保留位,必须是0
public byte end_bit;// :1位Bit; //指示是不是这一帧的最后一个分片
public byte start_bit;// :1位Bit; //指示是不是这一帧的第一个分片
}
public final byte[] RTP_START_CODE = new byte[] { 0x00, 0x00, 0x00, 0x01 };
public final byte[] RTP_AUDIO_CODE = new byte[] { 0x00, 0x01, (byte) 0xA0, 0x00 };
标签:
原文地址:http://blog.csdn.net/qingxing123/article/details/42965407