分类目录
文章索引模板
0303 sip rtp sound noise 抓包 - 六月 28, 2006 by yippee

0303 sip rtp sound noise 抓包

0222 sip rtp osip sound noise (2006-6-10)
http://www.yippeesoft.com/blog/p/0222siprtposipsoundnoise.php

0303 sip rtp sound noise 协议
http://www.yippeesoft.com/blog/p/0303siprtpsoundnoiseprotocol.php

看上去时间戳、序号增长不错的样子

No.     Time        Source                Destination           Protocol Info
   1186 33.094566    www.yippeesoft.com           www.yippeesoft.com          RTP      Payload type=ITU-T G.711 PCMA, SSRC=271620609, Seq=152, Time=7310341

Frame 1186 (282 bytes on wire, 282 bytes captured)
Ethernet II, Src:  www.yippeesoft.com  (00:d0:f8:00:55:f9), Dst:  www.yippeesoft.com  (00:d0:c9:98:75:3a)
Internet Protocol, Src:  www.yippeesoft.com  ( www.yippeesoft.com ), Dst:  www.yippeesoft.com  ( www.yippeesoft.com )
User Datagram Protocol, Src Port: 5024 (5024), Dst Port: 12580 (12580)
Real-Time Transport Protocol
    Stream setup by SDP (frame 11)
    10.. …. = Version: RFC 1889 Version (2)
    ..0. …. = Padding: False
    …0 …. = Extension: False
    …. 0000 = Contributing source identifiers count: 0
    0… …. = Marker: False
    Payload type: ITU-T G.711 PCMA (8)
    Sequence number: 152
    Timestamp: 7310341
    Synchronization Source identifier: 271620609
    Payload: 18170F222A361E3229366027BC33B3A5A3BCD39DBEA2B59E…

No.     Time        Source                Destination           Protocol Info
   1194 33.255379    www.yippeesoft.com           www.yippeesoft.com          RTP      Payload type=ITU-T G.711 PCMA, SSRC=271620609, Seq=153, Time=7310501

Frame 1194 (282 bytes on wire, 282 bytes captured)
Ethernet II, Src:  www.yippeesoft.com  (00:d0:f8:00:55:f9), Dst:  www.yippeesoft.com  (00:d0:c9:98:75:3a)
Internet Protocol, Src:  www.yippeesoft.com  ( www.yippeesoft.com ), Dst:  www.yippeesoft.com  ( www.yippeesoft.com )
User Datagram Protocol, Src Port: 5024 (5024), Dst Port: 12580 (12580)
Real-Time Transport Protocol
    Stream setup by SDP (frame 11)
    10.. …. = Version: RFC 1889 Version (2)
    ..0. …. = Padding: False
    …0 …. = Extension: False
    …. 0000 = Contributing source identifiers count: 0
    0… …. = Marker: False
    Payload type: ITU-T G.711 PCMA (8)
    Sequence number: 153
    Timestamp: 7310501
    Synchronization Source identifier: 271620609
    Payload: CDB1AFA4A6ABB6AEB6CD482F2421262C35263C38231A1A13…

标签:, , ,
0303 sip rtp sound noise 协议 - 六月 27, 2006 by yippee

0303 sip rtp sound noise 协议

0222 sip rtp osip sound noise (2006-6-10)
http://www.yippeesoft.com/blog/p/0222siprtposipsoundnoise.php

基于人家的SDK开发,提供了SIP和RTP协议栈,可是都是噪声。

根据协议,RTP应该比较简单 By xxj & faxiao

RTP 协议(Real Time Protocol)提供具有实时特征的、端到端的数据传送服务,可用来传送声音和运动图像数据。在这项数据传送服务中包含了装载数据的标识符、序列计数、时戳和传送监视。通常RTP 的协议元是用UDP 协议元来装载的,并利用UDP 的复用和校验和来实现RTP 的复用。
必须注意的是,RTP 没有提供任何确保按时传送数据的机制,也没有提供任何质量保证的机制,因而要实现服务质量必须由下层网络来提供保证。同样必须
注意的是,RTP 不保证数据包按序号传送,即使在下层网络能使保证可靠传送的条件下,也不保证数据包按序号传送。包含在RTP 中的序号可供接收方用于重构数据包序列,也可用于包的定位。
在RTP 会话中,复用是由目的传送地址(网络地址和端口号)来提供的,一个传送地址定义了一个RTP 会话。例如,在一个会议中,音频码流和视频码
流是分别用不同的RTP 会话(一般是同一个目的网络地址和不同的端口号)来传送,而不是用PT(载荷类别)或SSRC 作区分来实现单个RTP 会话中的复用
传送。

固定报头的RTP 报文结构如图3-1 所示:
RTP 报头中各字段的含义如下:
版本(V):2 个比特,表示RTP 的版本号。
填充(P):1 个比特,置“1”表示用户数据最后加有填充位,用户数据中
最后一个字节是填充位计数,它表示一共加了多少个填充位。在两种情况下可能
需要填充,一是某些加密算法要求数据块大小固定;二是在一个低层协议数据包
中装载多个RTP 分组。
扩展(X):1 个比特,置“1”表示RTP 报头后紧随一个扩展报头。
CSRC 计数(CC):4 个比特,表示在定长的RTP 报头后的CSRC 标识符的
数量。
标记(M):1 个比特,其具体解释由应用文档来定义。例如,对于视频流,
它表示一帧的结束,而对于音频,则表示一次谈话的开始。

载荷类别(PT):7 个比特,它指示在用户数据字段中承载数据的载荷类别。
序号(SN):2 个字节,每发送一个RTP 数据包该序号增加1。该序号在接
收方可用来发现丢失的数据包和对到来的数据包进行排序。
时间戳(TS):4 个字节,它用来表示RTP 包中用户数据段的第一个字节的采样时刻。时间戳的时间表示应为线性单调递增的,以便完成同步实现和抖动的
计算。
同步源标识符(SSRC):4 个字节,用来标识一个同步源。此标识符是随机选择的,但要保证同一RTP 会话中的任意两个SSRC 各不相同,RTP 必须检测
并解决冲突。
提供源标识符(CSRC):它可有0~15 项标识符,每一项长度为32 比特,其项数由CC 字段来确定。如果提供源多于15 个,则只有15 个被标识。
为了能满足各种应用的需要,RTP 报头可进一步扩充,其时X 比特将置“1”,扩充的RTP 报头部分则紧随在SCRC 清单之内。
如果扩展位被置为1,意味着RTP 固定头后紧跟着一个头扩展,其格式如图
3-2 所示。前16 位的内容由轮廓文件决定,主要用来标识不同的头扩展类型。这
种扩展方式主要用来传递独立于具体格式的载荷(payload-format-independent)
的应用信息。

标签:, , ,
0222 sip rtp osip sound noise - 六月 10, 2006 by yippee

0222 sip rtp osip sound noise

赶鸭子上架,该死的项目变来变去,弄得我开始人格分裂了,不管了,还是基于开源的自己试一试~~~

看示例程序:
else if (je->type==EXOSIP_CALL_ANSWERED)
&leftsign;
 printf( "<- (%i %i) [%i %s ANSWERED] %s",
  je->cid, je->did,
  je->status_code,
  je->reason_phrase,
  je->remote_uri);
 josua_printf(buf);
 call.build(je);
&rightsign;

if (ca->remote_sdp_audio_ip[0]==\’\\0\’)
&leftsign;
 osip_strncpy(ca->remote_sdp_audio_ip, je->remote_sdp_audio_ip, 49);
 ca->remote_sdp_audio_port = je->remote_sdp_audio_port;
 ca->payload = je->payload;
 osip_strncpy(ca->payload_name, je->payload_name, 49);
&rightsign;

根据我浅薄的理解,SIP协商语音能力之后,然后用RTP进行传输,那么现在就已经看到了 远程IP和远程端口
那么我就简单的用RTP进行传输一个强行转发为PCMU/PCMA的WAVE文件应该可以正常吧,结果全部是噪音。

FILE *source=fopen("c://12pcmu.wav","rb");
 if ( source == NULL )
 &leftsign;
  cout<<"can\’t access the file"<<endl;
 &rightsign;
//#ifdef win32
  
//#endif 
 size_t bufRead  = 0;
 bool Mark=true;
 #define bufsize 1024
 BYTE buffer[bufsize];
 int t;
 RTPSession sess;
 
 t=sess.Create(5800);
 if(t!=0)cout<<"can\’t create"<<endl;
 bool sen;
 if(t==0)&leftsign;sen=true;&rightsign;
 int nPT ;
 int nTSTAMP;
 sess.SetMulticastTTL(1); //砞﹚multicastTTL
 sess.AddDestination(ntohl(inet_addr("111.168.13.190")),portt); //﹚肚癳ヘ狠
 //sess.AddDestination(ntohl(inet_addr("192.168.25.79")),6900);
 if(t!=0) cout<<"can\’t add destination"<<endl;
 for (int jj=0;j<1000;j++)
 &leftsign;
 
 (void) fseek( source, 0, SEEK_SET );
  while(!feof(source))
  &leftsign;
   bufRead = fread(buffer, sizeof(BYTE), bufsize, source );
   nPT=rand()%64+1;  
   nTSTAMP=rand()%1000+1; 
   t=sess.SendPacket(buffer,bufsize,nPT,Mark,nTSTAMP); 
      if(t!=0)cout<<"can\’t sending"<<endl;
   Sleep(10);
   Mark=false;   
  &rightsign;
 &rightsign;
  (void) fflush( source );
  (void) fclose( source );
  cout<<("send success")<<endl;
 WSACleanup();

标签:, , ,