webrtc开源项目音频重采样“不友好接口”的几点总结
WebRTC(Web Real Time Communication)并不是Google原来自己的技术,在2010年,Google以大约6820万美元收购了VoIP软件
开发商Global IP Solutions公司,开源了WebRTC实时通信项目。
语音引擎是GIPS的语音通信的杀手锏,其主要是通过一系列的传输控制来达到在低带宽下传输实时的语音,GIPS语音引擎有着
广泛的客户群,比如skype、QQ等语音都是采用GIPS的语言引擎。通过其语音引擎,不仅能传输质量更高的语音,还能在丢包非常
严重的网络下传输实时的语音。
音频部分涉及:音频编解码、声音加密、声音处理、回声消除(AEC)、AECM、自动增益(AGC)、降噪处理。今天试用了 一下声
音处理部分的CResampler类,用得不是很爽。
1.仅限于单声道和双声道的处理,对于多声道音频,需要自己前期做些预处理。
kResamplerSynchronous = 0x10, kResamplerSynchronousStereo = 0x20
2.同样地:仅限于16bits的数据处理,需要自己添加8bits、32bits、浮点数处理。
int Push(const WebRtc_Word16* samplesIn, int lengthIn, WebRtc_Word16* samplesOut, int maxLen, int &outLen);
3.另外,为了实现快速重采样算法,每次处理samplesIn的长度有所限制。不同重采样因子下,对长度要求不一样。
例如: if ((lengthIn % 80) != 0) return -1; // We can only handle blocks of 80 samples, Can be fixed, but I don't think it's needed
其次,每次处理的最大长度不能超过SHRTMAX。
4. 对于44.1kHz和22.1kHz,都做了简化处理,当做44kHz和22kHz,减小处理每次处理数据量,加快运算速度,但是同时也
丢失了部分数据,降低了数据精度。
5.最后对分数级的重采样都分为几个步骤处理,减小每次处理的数据量,加快运算速率,简化代码量,对音频音质不会产生影响。
总体上来说,这套重采样代码实现了重采样的基本功能,主要优势体现在速度上,同时依赖的库和文件比较少。
6.不支持48k转44.1kHz
webrtc开源项目音频重采样“不友好接口”的几点总结的更多相关文章
- WebRTC开源项目一览之二
.Kurento视频直播系统4.1 应用实例搞视频会议就会涉及一对多.多对多.广播.转码.混音.合屏.录制,这就需要用到流媒体服务器,而kurento就具有这些功能.他主要用来作为webrtc的流媒 ...
- 开源项目:网页实时通信WebRTC
参考资料 [博客系列] Android WebRTC 音视频开发总结 [环境编译] WebRTC入门指南 各平台WebRTC源码网盘下载 Ubuntu14.04编译WebRTC For Android ...
- 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍
揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...
- 一个可能是世界上最全的 API 接口集合库开源项目
对于程序员来说,为自己的程序选择一些合适的API并不是那么简单,有时候还会把你搞得够呛,今天猿妹要和大家分享一个开源项目,这个项目汇集了各种开发的api,涵盖了音乐.新闻.书籍.日历等,无论你是从事W ...
- .Net 开源项目资源大全
伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- Android开源项目分类汇总
目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
随机推荐
- yourphp的eq作用
<eq name="> <span style="color:#090">是</span> <else /> 否 < ...
- Ubuntu 14.04 LTS 更新源大全
Ubuntu 14.04 LTS 系统更新源汇总 如何使用这些系统更新源?---三步走 首先备份源列表: sudo cp /etc/apt/sources.list /etc/apt/sources. ...
- OC-封装
一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水 ...
- mysql Table 'performance_schema.session_variables' doesn't exist
CMD 进入MYSQL的安装目录..Bin 下 执行 mysql_upgrade -u root -p --force 输入密码..然后等待一会儿..会跑一些东西..然后重启服务
- Orchard源码分析(6):Shell相关
概述在Orchard中,提出子站点(Tenant)的概念,目的是为了增加站点密度,即一个应用程序域可以有多个子站点. Shell是子站点(Tenant)级的单例,换句话说Shell代表了子站点.对比来 ...
- mybaties # , $
mybaties会对#引入的值加上双引号, 如: #{buildingName} -------->"buildingName";mybaties会将$引入的值直接显示到sq ...
- parastor2000挂载方式
1.先授权 2.客户端安装使用0528parastor-client-centos6.6-38390.tar.xz clusconf -f fatnodes --sync-do "cd /m ...
- InnoDB锁机制分析
InnoDB锁机制常常困扰大家,不同的条件下往往表现出不同的锁竞争,在实际工作中经常要分析各种锁超时.死锁的问题.本文通过不同条件下的实验,利用InnoDB系统给出的各种信息,分析了锁的工作机制.通过 ...
- Java中String和Int的相互转换
一.将字串 String 转换成整数 intA. 有2个方法:1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([Strin ...
- Flash+XML前后按钮超酷焦点图,层叠翻转图形
Flash+XML,有“前后”按钮,可以左右点击,支持鼠标滚轮,效果流畅,推荐下载.大图尺寸:680x345 点击下载