WebRTC VoiceEngine使用简单Demo

转载 2013年12月05日 13:38:24

http://blog.csdn.net/temotemo/article/details/7449525

        WebRTC VoiceEngine使用简单Demo       

分类:            WebRTC10688人阅读评论(8)收藏举报

WebRTC技术交流群:234795279


Google收购的GIPS公司的音频处理技术是很牛的,现在开源了,这么好的技术应该拿来用的,这里就简单的介绍一下怎样使用VoiceEngine,欢迎大家拍砖指导。

WebRTC相关的VideoEngine和VoiceEngine的API详细说明文档:http://www.webrtc.org/system/app/pages/subPages?path=/reference/webrtc-internals

WebRTC的VideoEngine和VoiceEngine源码在:http://code.google.com/p/webrtc/source/browse/#svn%2Fbranches


iSAC(Internet Speech Audio Codec 互联网语音音频编解码器)相关编码的参数

取样频率16kHz、24kHz或32kHz,自适应速率为10kbit/s至52kbit/s,自适应包大小为30至60ms,由于算法复杂度和自适应可变速率,相比于G.722.2每帧延时3ms左右。


关于如何配置iSAC的参数,可以参看这里文章的介绍


当前的版本VideoEngine是:ViE3.1.0

        VoiceEngine是:VoE4.1.0

  1. <pre class="cpp" name="code">/****
  2.     WebRTC音频引擎版本VoE4.1.0
  3. ***/ 
  4. //初始化VoiceEngine以及Sub_APIS     
  5. VoiceEngine*         _voiceEngine; 
  6. VoEBase*             _veBase; 
  7. VoENetwork*          _veNetwork; 
  8. VoECodec*            _veCodec; 
  9. VoERTP_RTCP*         _veRTCP; 
  10.  
  11. _voiceEngine  = VoiceEngine::Create(); 
  12.  
  13. _veBase     = VoEBase::GetInterface(_voiceEngine); 
  14. _veNetwork  = VoENetwork::GetInterface(_voiceEngine); 
  15. _veCodec    = VoECodec::GetInterface(_voiceEngine); 
  16. _veRTCP     = VoERTP_RTCP::GetInterface(_voiceEngine); 
  17. _vieBase->SetVoiceEngine(_voiceEngine); 
  18.  
  19. //编码器选择,编码的配置参数可以配置CodecInst: 
  20. // Each codec supported can be described by this structure. 
  21. /********
  22. struct CodecInst
  23. {
  24.     int pltype;
  25.     char plname[32];
  26.     int plfreq;
  27.     int pacsize;
  28.     int channels;
  29.     int rate;
  30. };********/ 
  31.  
  32. CodecInst voiceCodec; 
  33. // define iSAC codec parameters 
  34. strcpy(voiceCodec.plname, "ISAC"); 
  35. voiceCodec.plfreq   = 16000;    // iSAC宽带模式 
  36. voiceCodec.pltype   = 103;      // 默认动态负载类型 
  37. voiceCodec.pacsize  = 480;      // 480kbps,即使用30ms的packet size 
  38. voiceCodec.channels     = 1;        // 单声道 
  39. voiceCodec.rate     = -1;       // 信道自适应模式,单位bps 
  40.  
  41.     int numOfVeCodecs = _veCodec->NumOfCodecs(); 
  42.     for(int i=0; i<numOfVeCodecs;++i) 
  43.     { 
  44.         if(_veCodec->GetCodec(i,voiceCodec)!=-1) 
  45.         { 
  46.             if(strncmp(voiceCodec.plname,"ISAC",4)==0) 
  47.             break
  48.         } 
  49.     } 
  50.  
  51.     //网络传输应用 
  52.     _audioChannel = _veBase->CreateChannel(); 
  53.     _veRTCP->SetRTCPStatus(_audioChannel, true); 
  54.     _veCodec->SetSendCodec(_audioChannel, voiceCodec); 
  55.     _veBase->StartPlayout(_audioChannel); 
  56.  
  57. //音频和视频绑定 
  58. _vieBase->ConnectAudioChannel(_channelId,_audioChannel); 
  59.  
  60. //网络发送接收配置,远程端口:remotePort 目的IP:IP 
  61. _veBase->SetSendDestination(_audioChannel, remotePort,IP); 
  62. //本地接收 
  63. int res=_veBase->SetLocalReceiver(_audioChannel,localPort); 
  64.  
  65. _veBase->StartSend(_audioChannel); 
  66. _veBase->StartReceive(_audioChannel); 
  67.  
  68. _veBase->StopReceive(_audioChannel); 
  69. _veBase->StopSend(_audioChannel); 
  70.  
  71. //结束,释放资源 
  72.     if (_voiceEngine) 
  73.     { 
  74.         _veBase->DeleteChannel(_audioChannel); 
  75.         _veBase->Release(); 
  76.         _veNetwork->Release(); 
  77.         _veCodec->Release(); 
  78.         _veRTCP->Release();  
  79.        
  80.          VoiceEngine::Delete(_voiceEngine); 
  81.         } 
  82.  
  83. </pre> 
  84. <pre></pre> 
  85. <pre></pre> 
  86. <pre></pre> 
  87. <pre></pre> 
  88. <pre></pre> 
  89. <pre></pre> 

 

WebRTC VoiceEngine综合应用示例(二)——音频通话的基本流程

下面将以实现一个音频通话功能为示例详细介绍VoiceEngine的使用,在文末将附上相应源码的下载地址。这里参考的是voiceengine\voe_cmd_test。 第一步是创建VoiceEngin...
  • nonmarking
  • nonmarking
  • 2016年01月25日 10:55
  • 2704

WebRTC学习与DEMO资源一览

摘自: http://blog.chinaunix.net/uid-26000296-id-4890594.html 一. WebRTC学习 1.1   WebRTC现状 ...
  • xiaojun111111
  • xiaojun111111
  • 2016年03月30日 15:05
  • 1062

基于Linux webRTC 音语对讲之一-- 获取代码及编译

由于一个音语对讲项目需要使用linux webRTC 在ARM上实现实时对讲,所以简单的记录下开发过程及碰到的问题。 1.      获取webRTC代码,开始参考了很多网页,但是都不行,也许曾经可以...
  • peixiuhui
  • peixiuhui
  • 2015年07月03日 20:00
  • 1493

单独编译使用WebRTC的音频处理模块

不推荐单独编译 WebRTC 中的各个模块出来使用。     昨天有幸在 Google 论坛里询问到 AECM 模块的延迟计算一事,Project member 说捣腾这个延迟...
  • elesos
  • elesos
  • 2016年12月08日 14:26
  • 5109

webrtc网页视频demo

直接上demo原样复制粘贴就OK! 学习webrtc ...
  • xia13100004562
  • xia13100004562
  • 2016年12月30日 11:58
  • 722

基于WebRTC的多人视频会议

Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册      博文     博主    光阴过客hkyan.blog.chinaunix.net 人生就是一...
  • pxy1584417222
  • pxy1584417222
  • 2016年05月24日 14:22
  • 1687

WebRTC学习笔记_Demo收集

1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/extern...
  • yangyayuan
  • yangyayuan
  • 2013年09月26日 21:48
  • 26212

基于WebRTC实现页面浏览器视频通话-原理及实现demo

基于Chrome、Java、WebSocket、WebRTC实现浏览器视频通话,整个例子中Java+WebSocket起到的作用是负责客户端之间的通信,并不负责视频的传输,视频的传输依赖于WebRTC...
  • zeb_perfect
  • zeb_perfect
  • 2016年10月20日 10:47
  • 3505

【WebRTC】在IOS下编译WebRTC

项目上需要对webRTC进行一些research,就在网上下载了源码,并在IOS平台对其进行了编译。大致过程,以及期间碰到的问题如下: 【官网】 http://www.webrtc.org/refer...
  • qs_csu
  • qs_csu
  • 2013年12月19日 15:24
  • 17497

基于WEBRTC的免插件点到点视频分享

基于WEBRTC的免插件点到点视频分享 May 05 2013 , WebRTC WebRTC 是基于浏览器的实时通信协议(Real-Time Communications),通过We...
  • sunkooshining
  • sunkooshining
  • 2013年08月20日 15:32
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebRTC VoiceEngine使用简单Demo
举报原因:
原因补充:

(最多只允许输入30个字)