zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    nginx的linux服务器内核参数调整【转】
    从运维角度来分析mysql数据库优化的一些关键点【转】
    10 个 MySQL 经典错误【转】
    keepalived的vip无法ping通【原创】
    MySQL数据库的锁详解【转】
    CGI,FastCGI,PHP-CGI与PHP-FPM区别详解【转】
    vim块编辑删除、插入、替换【转】
    Keepalived两节点出现双VIP情况及解决方法【原创】
    通过全备+relaylog同步恢复被drop的库或表【转】
    MySQL伪master+Binlog+同步【转】
  • 原文地址:https://www.cnblogs.com/welen/p/3891039.html
Copyright © 2011-2022 走看看