编码RTP over G711A/G711U/PCM音频的大致过程
1.添加RTP12字节的头
2.添加payload(G711A/G711U/PCM/G726的真实数据)
RTP打包图
伪代码
void rtp_send_g711(char *data, int len){
char buf[MTU];
// fix buf[0~11] for rtp head
memcpy(&buf[0], &rtp_head, 12);
// fix nalu data
memcpy(&buf[12], data, len);
rtp_send(buf, len + 12);
}
RTSP->SDP
G711A:
v=0
o=username 1919893795 1 IN IP4
s=audio
i=
c=IN IP4 0.0.0.0
t=0 0
m=audio 0 RTP/AVP 8
a=rtpmap:8 PCMA/8000/1
a=control:track1
a=sendonly
G711U:
v=0
o=username 13293471 1 IN IP4
s=audio
i=
c=IN IP4 0.0.0.0
t=0 0
m=audio 0 RTP/AVP 0
a=rtpmap:0 PCMU/8000/1
a=control:track1
a=sendonly
G726:
v=0
o=username 990373985 1 IN IP4
s=audio
c=IN IP4 0.0.0.0
t=0 0
a=range:npt=0-
a=sendonly
a=control:*
m=audio 0 RTP/AVP 21
a=rtpmap:21 G726-32/8000/1 // G726-xx可取 16 24 32 40具体情况更改SDP
a=control:track1