rtp基本封包格式

2021-08-16 01:53:37 字數 2224 閱讀 4946

rtp包易於過大,一般每個包不要超過1400,這裡設定為1380,即default_mtu=1380

unsigned char *pnal;    //**資料報

int nalsize; //**資料報長度

uint32_t timestamp; //時間戳

// rtpsession rtp_session;

/* h264、h265 */

rtp_session.sendpacket(packetdata,packetdatasize,96,true,(uint32_t)timestamp);

/* aac */

uint8 aacheader[4]=;

aacheader[2] = nalsize >> 5;

aacheader[3] = (nalsize & 0x1f) << 3;

memcpy(packetdata,aacheader,sizeof(aacheader));

memcpy(packetdata+sizeof(aacheader),pnal,nalsize);

packetdatasize = nalsize+sizeof(aacheader);

// 以jrtplib以為傳送aac音訊資料的rtp包,成功時返回值是0

rtp_session.sendpacket(packetdata,packetdatasize,97,true,(uint32_t)timestamp);

unsigned char *pnal;    //**資料報

int nalsize; //**資料報長度

uint32_t timestamp; //時間戳

unsigned char packetdata[default_mtu]; //rtp資料報

uint32_t packetdatasize = 0; //rtp資料報長度

int rtp_head_size = 0;

//計算rtp包頭需要的資訊

#if h264 || aac

const uint8_t fu_indicator = (pnal[0] & 0xe0) | 28;

const uint8_t fu_header = pnal[0] & 0x1f;

pnal++;

nalsize--;

rtp_head_size = 2;

#else if h265

const uint8_t payloadhdr[2]=;

const uint8_t fu_header = (pnal[0] & 0x7e)>>1;

pnal+=2;

nalsize-=2;

rtp_head_size = 3;

#endif

//計算需要拆分的片數

uint32_t fu_size = 0;

if((nalsize % (default_mtu-rtp_head_size))!=0)

fu_size=nalsize / (default_mtu-rtp_head_size) +1;

else

fu_size=nalsize / (default_mtu-rtp_head_size);

int start = true; //第乙個分片標記

bool end_mask = false; //最後乙個分片標誌

while(nalsize>0)

if (fraglen == nalsize)

memcpy(packetdata+rtp_head_size, pnal, fraglen); //剩下的資料接在後面

// rtpsession rtp_session;

rtp_session.sendpacket(packetdata,packetdatasize,96,end_mask,(uint32_t)timestamp);

// 以jrtplib以為傳送aac音訊資料的rtp包,成功時返回值是0

rtp_session.sendpacket(packetdata,packetdatasize,97,true,(uint32_t)timestamp);

//**資料報去掉已經傳送的部分

nalsize -= fraglen;

pnal += fraglen;

}

rtp封包pcm RTP音訊AAC封包

過程比較簡單 需要將aac的前7個位元組的adts去掉 新增12位元組的rtp header 新增2位元組的au header length 新增2位元組的au header 從第17位元組開始就是payload 去掉adts的aac資料 資料了 音訊aac封包格式 rtp承載aac的格式由兩部分組...

RTP音訊AAC封包

需要將aac的前7個位元組的adts去掉 新增12位元組的rtp header 新增2位元組的au header length 新增2位元組的au header 從第17位元組開始就是payload 去掉adts的aac資料 資料了 rtp承載aac的格式由兩部分組成 2個位元組的au header...

H 264RTP封包原理

1.引言 2.rtp 協議關鍵引數的設定 其中比較關鍵的引數設定解釋如下 1 標示位 m 1 位,該標示位的含義一般由具體的 應用框架 profile 定義,目的在於標記處rtp 流中的重要事件。3 序號 16 位,每傳送乙個 rtp 資料報,序號加 1。接受者可以用它來檢測分組丟失和恢復分組順序。...