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();

历史博文

标签:, , ,
六月 10, 2006 at 10:38 上午 by yippee 1,009 次
Category: Dev
Tags: , , ,