1.webrtc linphone å°åºåªä¸ª
2.H264和MPEG-4是源码什么关系?
3.Android程序员如何应对人工智能带来的挑战?唯有进阶!内附《八大模块进阶学习资料》
4.å¦ä½å¨ android 设å¤ä¸ä½¿ç¨ pjsip G.729 ç¼è§£ç çåè½
5.声音数字化的源码过程分为哪三个步骤
webrtc linphone å°åºåªä¸ª
æ¯è¾æ¨èwebrtcãwebrtcåºæ¬ææ¯å·²ç»æäºï¼å æ¬p2pä¼ è¾ï¼é³è§é¢codec,é³é¢å¤çææ¯çããç¹å»å è´¹è¯ç¨ï¼0ææ¬å¯å¨ã
Linphoneæ¯èççsipï¼æ¯æå¹³å°å¹¿æ³ windows, mac,ios,android,linuxï¼ææ¯ä¼æ¯è¾æçãä½æ¯linphoneå¨Androidä¸çbugæç¹å¤ãimsdroid,csipsimple,linphoneé½æ³æ³è®¾æ³è°ç¨webrtcçé³é¢ææ¯ï¼æµè¯è¿Android端çwebrtcå ç½è§é¢éè¯æææ¯è¾æ»¡æãä½æ¯è¦æwebrtcåæä¸ä¸ªç§»å¨ç«¯çIM软件çè¯è¿æä¸äºè·¯è¦èµ°ï¼ä¸è¿webrtcåºæ¬ææ¯é½å·²ç»æäºï¼å æ¬p2pä¼ è¾ï¼é³è§é¢codec,é³é¢å¤çææ¯ãä¸è¿å ¶å 为ç®åä» æ¯æVP8çè§é¢ç¼ç æ ¼å¼ï¼QQä¹æ¯ï¼æ³åé«æ¸ è§é¢éè¯çè¦æ³¨æäºãVP8å¨ç§»å¨ç«¯ç硬件ç¼è§£ç æ¯æçå¹³å°æ²¡å 个ï¼RKå¯ä»¥æ¯æVP8硬件ç¼è§£ç ï¼ãä¸è¿webrtc代ç éçå°å¯ä»¥ä½¿ç¨å¤é¨codec,è¿ä¸ªè¿æ¯æå¸æè°å°Hçã
æ³è¦äºè§£æ´å¤å ³äºwebrtcçç¸å ³ä¿¡æ¯ï¼æ¨èå¨è¯¢ZEGOå³æç§æãZEGOå³æç§æèªä¸»ç åçé«é³è´¨è¯é³è§é¢å¼æï¼è½å¤æä¾å®æ¶æ¸ æ°çå¤äººè¯é³è§é¢éè¯ãæ¯æå¤è·¯è§é¢ç»é¢ï¼ä¿éæ¯ä¸è·¯è¯é³è§é¢é½æ¸ æ°æµç æä¾ç«¯å°ç«¯çSDKãåå¸å¼è½¬ç ãæ¥å ¥é´æäºæå¡æ¥å ¥ãæè±è¿ç»´ãè½»æ¾æ¯ææµ·éç¨æ·è¿è¥ã
H和MPEG-4是什么关系?
H. 是MPEG-4 标准所定义的最新,同时也是源码技术含量最高、代表最新技术水平的源码视频编码格式之一。 H. 最具价值的源码部分无疑是更高的数据压缩比。在同等的源码财务核算指标源码图像质量条件下,H. 的源码数据压缩比能比当前 DVD 系统中使用的 MPEG-2 高2-3 倍,比MPEG-4 高1.5-2 倍。源码正因为如此,源码经过H. 压缩的源码视频数据, 在网络传输过程中所需要的源码带宽更少,也更加经济。源码在 MPEG-2 需要6Mbps 的源码传输速率匹配时,H. 只需 要1Mbps-2Mbps 的源码传输速率。 与MPEG-4 一样,源码经过H. 压缩的视频文件一般也是采用.avi 作为其后缀名,同样不容易辨认,只能通过解码器来自己识别
H. 与MPEG4 区别 压缩方式是DVR 的核心技术,压缩方式很大程度上决定着图像的质量、压缩比、 传输效率、传输速度等性能,它是评价DVR 性能优劣的重要一环。 随着多媒体 技术的发展,相继推出了许多压缩编码标准,目前主要有JPEG/M-JPEG、 H./H. 和MPEG 等标准。 1、JPEG/M-JPEG ①、JPEG 是一种静止图像的压缩标准,它是一种标准的帧内压缩编码方 式。当硬件处理速度足够快时,JPEG 能用于实时动图像的视频压缩。在画面变 动较小的情况下能提供相当不错的图像质量,传输速度快,使用相当安全,缺点 是数据量较大。 ②、M-JPEG 源于JPEG 压缩技术,是一种简单的帧内JPEG 压缩,压缩 图像质量较好,在画面变动情况下无马赛克,但是由于这种压缩本身技术限制, 无法做到大比例压缩,录像时每小时约1-2GB 空间,网络传输时需要2M带宽, 所以无论录像或网络发送传输,都将耗费大量的硬盘容量和带宽,不适合长时间 连续录像的需求,不大实用于视频图像的网络传输。 2、H./H. ①、H. 标准通常称为P*,H. 对全色彩、实时传输动图像可以达 到较高的压缩比,算法由帧内压缩加前后帧间压缩编码组合而成,以提供视频压 缩和解压缩的jmeter dubbo插件源码快速处理。由于在帧间压缩算法中只预测到后1 帧,所以在延续时 间上比较有优势,但图像质量难以做到很高的清晰度,无法实现大压缩比和变速 率录像等。 ②、H. 的基本编码方法与H. 是相同的,均为混合编码方法,但H. 为适应极低码率的传输,在编码的各个环节上作了改进,如以省码字来提高编码 图像的质量,此外, H. 还吸取了MPEG 的双向运动预测等措施,进一步提 高帧间编码的预测精度,一般说,在低码率时,采用H. 只要一半的速率可 获得和H. 相当的图像质量。 3、MPEG MPEG 是压缩运动图像及其伴音的视音频编码标准,它采用了帧间压缩, 仅存储连续帧之间有差别的地方 ,从而达到较大的压缩比。MPEG 现有 MPEG—1、MPEG—2 和MPEG—4 三个版本,以适应于不同带宽和图像质量 的要求。 ①、MPEG—1 的视频压缩算法依赖于两个基本技术,一是基于*(像 素*行)块的运动补偿,二是基于变换域的压缩技术来减少空域冗余度,压缩比 相比M-JPEG 要高,对运动不激烈的视频信号可获得较好的图像质量,但当运 动激烈时,图像会产生马赛克现象。 MPEG-1 以1.5Mbps 的数据率传输视音频 信号,MPEG-1 在视频图像质量方面相当于VHS 录像机的图像质量,视频录像 的清晰度的彩色模式≥TVL,两路立体声伴音的质量接近CD 的声音质 量。 MPEG-1 是前后帧多帧预测的压缩算法,具有很大的压缩灵活性,能变速 率压缩视频,可视不同的录像环境,设置不同的压缩质量,从每小时 MB 至 MB 不等,但数据量和带宽还是比较大。 ②、MPEG-2 它是获得更高分辨率(*)提供广播级的视音频编码标 准。MPEG-2 作为MPEG-1 的兼容扩展,它支持隔行扫描的视频格式和许多高 级性能包括支持多层次的可调视频编码,适合多种质量如多种速率和多种分辨率 的场合。它适用于运动变化较大,要求图像质量很高的实时图像。对每秒 帧、 * 分辨率的视频信号进行压缩,数据率可达3-Mbps。由于数据量太大, 不适合长时间连续录像的需求。 ③、MPEG-4 是销售开单软件源码为移动通信设备在Internet 网实时传输视音频信号而制定的 低速率、高压缩比的视音频编码标准。 MPEG-4 标准是面向对象的压缩方式, 不是像MPEG-1 和MPEG-2 那样简单地将图像分为一些像块,而是根据图像的 内容,其中的对象(物体、人物、背景)分离出来,分别进行帧内、帧间编码, 并允许在不同的对象之间灵活分配码率,对重要的对象分配较多的字节,对次要 的对象分配较少的字节,从而大大提高了压缩比,在较低的码率下获得较好的效 果, MPEG-4 支持MPEG-1、MPEG-2 中大多数功能,提供不同的视频标准源 格式、码率、帧频下矩形图形图像的有效编码。 总之,MPEG-4 有三个方面的优势: ①、具有很好的兼容性; ②、MPEG-4 比其他算法提供更好的压缩比,最高达:1; ③、MPEG-4 在提供高压缩比的同时,对数据的损失很小。所以,MPEG-4 的应用能大幅度的降低录像存储容量,获得较高的录像清晰度,特别适用于长时 间实时录像的需求,同时具备在低带宽上优良的网络传输能力。 H. 是ITU-T 的VCEG(视频编码专家组)和ISO/IEC 的MPEG(活动图像 编码专家组)的联合视频组(JVT:joint video team)开发的一个新的数字视频 编码标准,它既是ITU-T 的H.,又是ISO/IEC 的MPEG-4 的第 部分。 年1 月份开始草案征集, 年9 月,完成第一个草案, 年5 月制 定了其测试模式TML-8, 年6 月的 JVT 第5 次会议通过了H. 的FCD 板。目前该标准还在开发之中,预计明年上半年可正式通过。 H. 和以前的标准一样,也是DPCM加变换编码的混合编码模式。但它 采用“回归基本”的简洁设计,不用众多的选项,获得比H.++好得多的压缩性 能;加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误 码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传 输(存储)场合的需求;它的基本系统是开放的,使用无需版权。 在技术上, H. 标准中有多个闪光之处,如统一的VLC 符号编码,高精 度、多模式的android源码调用jar位移估计,基于4×4 块的整数变换、分层的编码语法等。这些措 施使得 H. 算法具有很的高编码效率,在相同的重建图像质量下,能够比 H. 节约%左右的码率。H. 的码流结构网络适应性强,增加了差错恢 复能力,能够很好地适应IP 和无线网络的应用。 其实现在多数的什么H. 都是H.++通过改进后的算法,是压缩率变的小 了点(包括现在有个别的生产厂家,我同事都看到过他们的源代码)!如果是从 单个画面清晰度比较,MPEG4 有优势;从动作连贯性上的清晰度,H. 有优 势!
Android程序员如何应对人工智能带来的挑战?唯有进阶!内附《八大模块进阶学习资料》
随着AI技术的飞速发展,Android程序员面临更多机遇与挑战。李开复筹组Project AI 2.0,打造中文版ChatGPT,需要大量人才加入,对Android开发者而言,这是一次转型AI领域的绝佳机会。
为了在AI领域进阶,Android开发者需掌握深度学习、机器学习算法与数据挖掘技术,这些能力在自然语言处理、图像识别、语音识别等领域发挥关键作用。精通Java和Kotlin,理解Android架构如MVP、MVVM,并深入掌握Android框架和API是高级工程师的必备技能。不断学习新技术和框架,如Jetpack、Kotlin Coroutines、Flutter等,将显著提高竞争力。
为此,一份《八大模块进阶资料》提供了全面指导,覆盖Android开发前沿技术、阿里、腾讯、字节跳动等大厂面试焦点。包含架构筑基、框架源码解析、性能优化、高级Kotlin、UI开源框架、NDK模块开发、Flutter技术与微信小程序开发等内容,共计8大模块、个知识点、页、万字,全面覆盖Android开发核心。
通过学习这份资料,人员物品登记源码Android开发者将获得系统性、进阶的技能提升,把握AI技术带来的机遇。点击下方卡片,即可免费获取这份《八大模块进阶资料》,开启AI领域进阶之旅。
随着AI技术的不断进步,Android程序员将面临更多机遇与挑战。通过掌握AI相关技能,积极融入AI领域,Android开发者将拥有广阔的发展前景。
å¦ä½å¨ android 设å¤ä¸ä½¿ç¨ pjsip G. ç¼è§£ç çåè½
ã第ä¸æ¥æ¯çæ pjsip 为 Android ï¼æ¥éª¤ä¸º Ubuntu Linuxï¼ çæºä»£ç ï¼
ãã1.设置 ANDROID_NDK_ROOT ç¯å¢åéè®¾ç½®ä¸ºæ¨ NDK æ ¹æ件夹ã
ãã2.è½¬å° pjsip 2.x æ件夹并å建 pjlib/include/pj/config_site.h å æ¬ config_site_sample.h ( #include <pj/config_site_sample.h> )
ãã3.è¿è¡./configure-android
ãã4.è¿è¡make clean && make depend && make
ããä¹åè¿äºæ¥éª¤ï¼å°æå 个éæåºä¸çå 个æ件夹ã建议å°å®ä»¬åç»ç¸åçæ件夹 ï¼æ好å¨æ¨ç项ç®ä¸ï¼ ä¸çï¼
ããmkdir <your_project_path>/pjsip_libs
ããfind . -name *.a | xargs -I % cp % <your_project_path>/pjsip_libs/
ããä¸æ¦èªå·±çææåºï¼æ¨éè¦å°è¿äºåºæ·»å å°æ¨çé¡¹ç® Android.mk æ件ï¼è¿æ¯ç±å æ¬ä¸ä¸ªæ°ç模åèæ¯ä¸ªå¾ä¹¦é¦ãæ¤æ¨¡åé¨ååºè¯¥æ¯ä¸æ ·çä¸è¥¿ï¼
ããinclude $(CLEAR_VARS)
ããLOCAL_MODULE := pjsua-arm-unknown-linux-androideabi
ããLOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a
ããinclude $(PREBUILT_STATIC_LIBRARY)
ããï¼å ¶å®æ¯ä¸èä¸æ建æ¨ç JNI 项ç®çæºä»£ç ï¼ææ模åé½æ·»å å°æ¨çéæåºçå¼ç¨ï¼
ããLOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi ...
ããè¿å°å æ¬ pjsip çå¼ç¨å å ¥æ¨ç JNI åºãç°å¨ï¼æ¨éè¦é ç½® pjsip UA å®ä¾ã
ããæä¸ä¸ªå ³äº init åå¼å§ç解é pjsip ç UA (pjsua) å¨ pjsip/include/pjsua-lib/pjsua.h ä½è¦éµå¾ªç主è¦æ¥éª¤æ¯ï¼
ãã1.å建ä¸ä¸ªå ·æ UA å®ä¾pjsua_create
ãã2.å建ä¸ä¸ªå·¥ä½çº¿ç¨ä¸pj_thread_create
ãã3.UA å®ä¾ç设置çé»è®¤é ç½®ï¼
ããpjsua_config cfg æ¡© ï¼pjsua_logging_config log_cfg ï¼pjsua_media_config media_cfg ï¼
ããpj_cli_cfg_default(&app_config.cli_cfg.cfg) ï¼pjsua_logging_config_default(&log_cfg) ï¼pjsua_media_config_default(&media_cfg) ï¼
ãã4.åå§åå æ ä¸pjsua_init
ãã5.å¯å¨ä¸å æ pjsua_start
ããä»è¿éï¼æå 足çé ç½®é项 ï¼æ¥å¿ã åªä½ã 交éå·¥å ·çï¼
ããæ¨å¯ä»¥æ¾å°åºæ¬ PJSIP æç¨å¨è¿éï¼åéé¢ pjsip çæºçæ ¹è·¯å¾ï¼æä¸ä¸ªåºæ¬ ï¼ä½ä¸å¤å®æ´ï¼åºæ¬ç SIP 使ç¨æ åµï¼ å¨ï¼pjsip-apps/src/samples/simple_pjsua.c
ããç¼è¾ï¼å¨çææ¶å¨ pjsip åºç¨ç¨åºç android 项ç®ï¼å¯ä»¥é¢ä¸´ä¸ä¸ªé®é¢ï¼å 为 pjsua app ä¸çæé»è®¤æ åµä¸ï¼å¯¹ä¸è¬çæ ï¼æ´å ·ä½å°è¯´ï¼pjsuaï¼ ç®æ ä¸å æ¬ææä¸ï¼ å¨ pjsip-åºç¨ç¨åº/çæ/çææ件çç®æ )ãè¥è¦ä¿®å¤è¿åªæ¯è½¬å° pjsip-åºç¨ç¨åº/å建åè¿è¡ï¼
ãã使 pjsua
ããè¿å°å建å¨æ£ç¡®ç对象æ件: pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/ (éè¦æ建 android æ ·æ¬æ¶)ã
ããä¸æ¦ææç¸åºç对象æ件ï¼æ¨å¯ä»¥å¨ pjsip-åºç¨ç¨åº/src/pjsua/android ç³»ç»å次è¿è¡ ndk çæ
声音数字化的过程分为哪三个步骤
1、引言
就音频而言,无论是算法多样性,Codec种类还是音频编解码复杂程度都远远比视频要高。视频的Codec目前还主要是以宏块为处理单元,预测加变换的混合编码框架,例如H.和H.都是在这一框架下。而音频则相当复杂,且不同的场景必须要选择不同的音频编解码器。以下就是本次为大家分享的主要内容,希望通过此次分享可以使大家对音频编解码有一个整体的认识,并在实际应用中有参考的依据。
本次分享的内容提纲:
1)语音/音频编码总表;
2)数字语音基本要素;
3)为什么要压缩;
4)编码器考虑的因素;
5)语音经典编码模型;
6)ISO;
7)编码模型;
8)USAC;
9)编码;
)使用选型考虑的因素。
* 本次演讲PPT文稿,请从文末附件下载!
(本文同步发布于:
/thread--1-1.html)
2、分享者
刘华平:
- 现为网易云音乐音视频实验室负责人,上海大学通信学院在职博士;
- 曾任掌门集团(WIFI万能钥匙)音视频技术研发总监,资深研究员;
- 行者悟空声学技术有限公司首席技术官(联合创始人);
- 阿里巴巴前高级技术专家(P8), 阿里音乐音视频部门总监;
- Visualon音频部门经理、盛大创新院研究员、Freescale 上海研发中心多媒体部门;
- 早期 Google Android SDK多媒体架构的贡献者,开源 AMR_WB 编码器工程开发者。
刘华平拥有5项技术发明专利、二十余篇专业论文和多项软件著作权,参与过浙江省杭州重大专项项目,浙江省金华科委项目,上海市科委项目(球谐域全景音频关键技术研究)。
3、系列文章
本文是系列文章中的第篇,本系列文章的大纲如下:
《即时通讯音视频开发(一):视频编解码之理论概述》
《即时通讯音视频开发(二):视频编解码之数字视频介绍》
《即时通讯音视频开发(三):视频编解码之编码基础》
《即时通讯音视频开发(四):视频编解码之预测技术介绍》
《即时通讯音视频开发(五):认识主流视频编码技术H.》
《即时通讯音视频开发(六):如何开始音频编解码技术的学习》
《即时通讯音视频开发(七):音频基础及编码原理入门》
《即时通讯音视频开发(八):常见的实时语音通讯编码标准》
《即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述》
《即时通讯音视频开发(十):实时语音通讯的回音消除技术详解》
《即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解》
《即时通讯音视频开发(十二):多人实时音视频聊天架构探讨》
《即时通讯音视频开发(十三):实时视频编码H.的特点与优势》
《即时通讯音视频开发(十四):实时音视频数据传输协议介绍》
《即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情况》
《即时通讯音视频开发(十六):移动端实时音视频开发的几个建议》
《即时通讯音视频开发(十七):视频编码H.、V8的前世今生》
《即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型》(本文)
4、语言/音频编码总表
▲ 语言/音频编码总表
上图展示的是语言/音频编码总表,可以看到其比视频编码要复杂得多,单纯的算法也远远比视频要更加复杂。
5、数字语言基本要素
数字声音具有三个要素:
1)采样率;
2)通道数;
3)量化位数。
▲ 声音数字化的过程
如上图所示,声音数字化的过程为:
1)采样:在时间轴上对信号数字化;
2)量化:在幅度轴上对信号数字化;
3)编码:按一定格式记录采样和量化后的数字数据。
6、为什么要压缩
压缩音频,主要是为了在降低带宽负担的同时为视频腾出更多带宽空间。存储和带宽二大因素决定了语音压缩的必要性。
我们看看下面的例子。
长度为4分钟,采样频率为Hz,采样深度为bits,双声音Wav文件大小:
Hz*bits*4minutes*2=(/1second)*bits*(4minutes*(seconds/1minutes)*2=bits/second*seconds=bits=/(8bits/1byte)*2=bytes=/(/1M)bytes=.MB
MP3,kbps压缩后文件大小:
kbps*4minutes=(kbits/1second)*(4minutes*(seconds/1minutes))=(kbits/1second)*seconds=kbits=kbits/(8bits/1byte)=kbytes=k/(k/1M)bytes=3.Mbytes=3.MB
正如上面的例子,声音压缩后,存储大小为原大小的十分之一,压缩率十分可观!
7、编码器考虑因素
7.1 基本概念
编码器考虑的因素:
1)最佳压缩比;
2)算法的复杂度;
3)算法延时;
4)针对特殊场景下的特定设计;
5)兼容性。
通过一些特定的压缩算法,可以压缩音频文件至原来的1/,同时人耳也无法分辨压缩前后的声音质量差异,需要满足多种条件才能实现这种效果;而对于编码器,无论是设计阶段还是使用阶段,我们都需要考虑最佳压缩效果、算法的复杂度与算法的延时,结合特殊场景进行特定的设计;而兼容性也是我们不能不考虑的重点。
7.2 语音经典编码模型:发音模型
▲ 发音模型(原图点击查看)
我们的很多编解码器都是基于综合人的发音模型与一些和听觉相关的理论支持研究提出的特定编解码算法。初期我们通过研究人的发音原理来设计音频编解码的算法,包括端到端的滤波或轻浊音等,只有充分理解人的发声原理我们才能在编解码端做出有价值的优化。
7.2.1语音编码模型——LPC:
▲ 经典语音编码模型:LPC(原图点击查看)
▲ LPC 数学表达
LPC作为经典语音编码模式,其本质是一个线性预测的过程。早期的G.7系列编码模型便是通过此模型对整个语音进行编码,上图展示的过程可与之前的人发声过程进行匹配,每个环节都有一个相应的模块用来支撑人发声的过程。其中使用了AR数学模型进行线性预测,此算法也是现在很多语音编码的重要组成模块。
7.2.2语音编码模型——G.:
▲经典语音编码模型: G.(CELP)
G.同样是经典的语音编码模型之一,也是我们学习语音编码的一个入门级Codec。G.的文档十分完善,包括每个模块的源代码在内都可直接下载。G.可以说是在早期发声模型基础上的改进,需要关注的性能指标是帧长与算法上的延时,包括语音质量的MOS分。G.也有很多变种,由于语音需要考虑系统兼容性,不同的系统指定携带的Codec也不同,音频编码的复杂程度要远高于视频编码。
G. 建议了共轭结构的算术码本激励线性预测(CS-ACELP)编码方案。G.算法的帧长为ms, 编码器含5ms 前瞻,算法时延ms,语音质量MOS分可达4.0。
7.3 语音经典编码模型——听觉模型
▲ ISO编码模型:心理声学模型
除了研究人发声的原理,我们还需要研究人听声的原理,从而更好实现声音的收集与处理。一个声音信号是否能被人耳听见主要取决于声音信号的频率、强度与其他音的干扰。心理声学模型便是用来找出音频信号中存在的冗余信息从而实现在压缩声音信号的同时不影响听觉的目的。心理声学理论的成熟为感知编码系统奠定了理论基础,这里的感知编码主要是ISO编码模型,主要覆盖的声学原理有临界频带、绝对听觉阈值、频域掩蔽、时域掩蔽等。
▲ 听觉模型
无论是MP3还是AAC以至于到后面的杜比音效都是基于听觉模型进行的探索与创新。
7.3.1临界频带:
由于声音频率与掩蔽曲线不是线性关系,为从感知上来统一度量声音频率,引入了“临界频带”的概念。通常认为,在Hz到kHz范围内有个监界频带。临界频带的单位叫Bark(巴克)。
▲ 临界频带
临界频带主要用于心理声学模型。由于声音频率与掩蔽曲线并非线性关系,为从感知上来统一度量声音频率,我们引入了“临界频带”的概念。人耳对每段的某个频率的灵敏度不同,二者关系是非线性的。通常我们会将人可以听到的整个频率也就是从Hz到KHz分为个频带,可在其中进行时域或频域类的掩蔽,将一些冗余信息从编码中去除从而有效提升压缩率。
7.3.2绝对听觉阈值:
▲ 绝对听觉阈值
绝对听觉阈值也可有效提升压缩率,基于心理声学模型,可去除编码中的冗余部分。
7.4 经典音频编码:ISO
▲ 经典音频编码:ISO
我们可将最早的MP3 Layer1理解为第一代的ISO感知编码,随后的一些纯量化内容更多的是在压缩上进行改进而核心一直未改变。从MP3 Layer1到Layer2与Layer3,主要的改变是心理声学模型的迭代。
▲ MPEG1 LayerI Codec
▲ MPEG1 LayerIII Codec
上图展示的是Encode与Decode的回路。输入的PCM首先会经过多子带分析与频域中的心理声学模型冗余处理,而后进行量化编码;Layer III中的是我们现在常说的MP3的Codec:Encode与Decode之间的整体回路,相比于Layer1多了几个处理环节以及霍夫曼编码。
7.5 AAC协议族
▲ AAC家族
AAC与G.一样包括很多系列,但AAC的巧妙之处在于向下兼容的特性。开始时我们就强调,所有Codec在设计时都需要考虑兼容性,瑞典的Coding Technology公司曾提出在兼容性上特别优化的方案。AAC Plus V1包括AAC与SBR,AAC Plus V2包括AAC+SBR+PS,现在常见的很多音乐类或直播音频编码都是基于AAC Plus协议族进行的。
德国的霍朗浦学院曾在AAC低延时协议扩展方面做出一些探索并得到了AAC LD协议族,其原理仍基于传统的AAC模块,但在后端会对处理长度进行调整,例如之前是以bit为一个处理单位,那改进后则以bit为一个处理单位。除此之外AAC LD加入了LD-SBR与LD-MPS等,从而形成一个规模较大的AAC-ELD V2模块,可以说是十分巧妙。
7.5.1AACPlus核心模块——SBR(Spectral Band Replication):
▲ SBR(Spectral Band Replication)
我们可以看到,AAC可以说充分利用了频域扩展,用很小的代价实现诸多功能优化。AAC的核心之一是SBR,这是一种使用极少位数就可描述高频部分并在解码时进行特殊优化从而实现频域扩展的模块。上图展示的是不同压缩率模块所覆盖的频率取值范围,而使用AAC时需要注意一个被称为“甜点码率”的指标。无论是采样率还是码率都是变化的,在应用时选择何种码率十分关键。例如直播时采用Kbps即可在覆盖整个频段的同时保持良好音质。
7.5.2AACPlus核心模块——PS(Parametric Stereo):
▲ :PS(Parametric Stereo)
PS 描述参数:IID(Inter-channel Intensity Difference),,ICC(Inter-channel Cross-Correlation),IPD(Inter-channel Phase Difference)。
▲ AACPlus v2编码框图
▲ AACPlus v2解码框图
PS模块也是AAC的核心模块之一,主要用于分析左右声道属性并使用非常少的位数表示左右声道相关性,而后在解码端将左右声道分离。这里比较巧妙的是PS的向下兼容特性,整体数据打包是分开进行的。如果获取到AAC、SBR、PS三者的基本数据包后,在解码阶段我们就只需AAC—LC。上图展示的就是AAC的解码框架,如果大家读过3GPP的代码就可发现其每一个模块都相当清楚。我们可根据文档读取代码并对应到每一个环节。
7.5.3甜点码率:
▲ AAC 甜点码率
甜点码率是一项很关键的指标。例如在手机直播应用场景中,一般的视频分辨率为×,音频码率大约在K左右。如果音频码率过大则会直接影响视频质量,因而我们需要控制音频码率在一个较为合适的范围内从而实现最佳的音画效果。在很多应用场景中可能需要系统根据不同的网络环境下载不同音质的文件,例如在2G环境中下载较小的文件,这样做主要是为了节省带宽并提高音频文件的播放流畅程度。
7.6 AAC-ELD家族
AAC-ELD家族产生背景:
aacplus v2 已经在压缩和音质方面做到了近似于极致,但由于算法实现上的长达ms左右的延时极大的阻碍aacplus v2在实时通讯领域的应用。Fraunhofer IIS 为了解决这个问题,对AAC进行相关改进,形成了AAC-ELD协议族。
▲ AAC-ELD家族
AAC-ELD家族带来的主要改进是低延迟。如果Codec的延迟太长便无法在一些特定场景中被使用。例如早期AAC Plus V2的整体延迟可达ms,如此高的延迟肯定无法被应用于语音通话等对实时性要求极高的应用场景。霍朗普学院推出的AAC-ELD可在保持音质的前提下将延迟降低至ms,相对于MP3最高长达ms的延迟而言提升巨大。
7.7 应用中端到端的延迟
▲ 端到端的延时
编解码过程也存在延时问题,这也是我们选择编解码器时需要考虑的最主要因素之一,编解码的延时主要由处理延时与算法延时组成,例如G.的算法延时为ms,而AAC-LC可达到一百毫秒以上。另外,播放端或采集端的长帧数量太多,播放时缓存太多等也会直接影响延时,我们在选择编解码器时需要考虑延时带来的影响。
编解码器已经历了两个发展方向:
1)一个是以G.7(G.)为例,根据发声模型设计的一套主要集中于语音方面的编解码算法;
2)另一个是以ISO的MP3和AAC为例,根据心理声学模型设计的一套感知编码。
最近的趋势是编码的统一:
原来在语音场景下我们使用8K或K进行采样,音乐场景下则需使用覆盖到全频带的.1K进行采样,每个Codec都有一个频域覆盖的范围。在之前的开发中,如果应用场景仅针对压缩语音那么需要选择语音编码方案,如果应用场景针对压缩音乐则需要选择音乐编码方案,而现在的发展方向是通过一套编码从容应对语音与音乐两个应用场景,这就是接下来将要被提到的USAC。
这里介绍两个比较典型的Codec:
1)一个是Opus,通过其中集成的模块可实现根据传入音频文件的采样率等属性自动选择语音编码或音乐编码;
2)另一个是EVS这也是霍朗普等组织推行的方案,已经尝试用于4G或5G之中。
EVS (Enhanced Voice Services):
主要是VoiceAge, Dolby, Fraunhofer, 华为联合开发的USAC编码器,低速率音乐编码质量很好。
▲ USAC
由框图我们可以了解到USAC向下兼容的特性。
编解码器可总结为经历了三个时代:
1)发声模型;
2)听觉感知;
3)融合方案。
接下来我将展示目前所有的Codec情况并整理为表格以方便大家检索查阅。
8、解码器(Codec)总结
8.1 IETF系列
IETF作为标准协议联盟组织之一推出了以上Codec:Opus包括采样率为8kHz、甜点码率为kbps的窄带单声语音(SILK),采样率为kHz、甜点码率为kbps的宽带单声语音与采样率为kHz、甜点码率为kbps的全带单声语音(CELT),采用甜点码率意味着将压缩率和音质保持在一个良好的平衡状态。在一些窄带单声语音应用场景例如常见的微信语音聊天,其压缩率可达到原来的8.5%。Opus没有技术专利和源代码的门槛,使得其受到现在很多流媒体厂商的欢迎,Opus支持更广的码率范围,具备丰富采样率选择,可实现极低延迟与可变帧大小,也具备以往一些Codec的许多特性如CBR、VBR、动态调整等,支持的通道数量也更多。除此之外,Opus同样具备许多从SILK移植而来的特性或功能。如在VUIB传输上集成了扛丢包模式等。
iLBC早在SILK未出现时就被提出同样具备抗丢包。的特性,高达.2kbps的甜点码率与4.的Mos使其音质较为良好,超过G.的相关指标;GSM就是最早手机网络仍停留在2G时代时流行的编码形式,主要用于蜂窝电话的编码任务。
8.2 AMR系列
AMR早在3G时期就被广泛应用,AMR-NB是最流行的语音编码器,具有压缩效果好,支持多种码率形式的特点;与此同时,这也是GSM与3G时期Android平台最早支持的窄带语音编码方案。AMR-WB作为AMR-NB向宽带的扩展版,主要用于3G和4G通话标准协议中,其甜点码率为.kbps。在实践中我们将码率参数调整为此值即可实现压缩率与质量的平衡。AMR-WB+则是上述两者的融合,三者共同构成AMR系列。
8.3 ITU-T G系列
ITU-T G系列包括最早的波形编码G到现在大家熟悉的G.这里我想强调的是G.1 Siren7、G.1c Siren与G Siren,例如G.可覆盖整个前频带且支持立体声。即使都属于老协议,但由于其优秀的兼容性,不应被我们忽略。
将Opus与其他一些Codec进行对比我们可以看到,无论是质量还是延时控制,Opus的优势十分明显;加之Opus作为开源的免费方案,不存在专利限制,受到业界追捧也不足为奇。
8.4 ISO系列
ISO里我想强调的是MP3与AAC,二者同样支持很多码率。MP3的甜点码率为kbps,MP3 Pro的码率可达到MP3的一半;AAC支持8~khz的采样率,AAC-LC的甜点码率为kbps,HE-AAC的甜点码率为kbps,AAC-LD与ELD做到了AAC的低延时,实现了延时与压缩比的最佳平衡。
8.5 3GPP系列:EVRC
EVRC 是CDMA 中使用的语音编解码器,由高通公司年提出目标是取代QCELP。
高通公司主推的3GPP是CDMA中使用的语音编解码器,在未来选择编解码器类型时我们需要特别考虑延时与帧长。由于语音编码种类很多,帧长也是复杂多变的,其背后的算法复杂程度,RAM、ROM占用等都是在实践当中需要着重考虑的。
8.6 极低码率
极低码率主要的应用场景是对讲机、卫星通讯、军工等。
上图图表中的MELP最早由美国军方开发,现在绝大多数的对讲机都基于此模型进行扩展开发,压缩后的码率可达到2.4kbps而目前最极端的极低码率可实现bps,相当于压缩为原数据的0.2%,此时的音频文件仅能被用于传达语音内容而丢失了很多声色。
8.7 全频带
全频带中的组合也是多种多样。
9、编解码使用注意
9.1 License
▲ 开源项目常用的Lisence
国内大部分企业在开发时容易忽视包括专利安全性在内的与License相关的内容。如果企业计划得比较长远,需要长期使用某项技术或企业规模不断扩大时则不能不考虑专利问题。专利费用包括Open Source与算法专利,二者完全独立互不干涉,如果我们从某家专利公司购买了AAC的专利算法,并不能获得此AAC专利的源代码,仅能获得与此技术相关的专利使用授权。专利公司会给予需要下载的文件列表,通过这种方式实现技术的授权使用。
▲ 一张图看懂Lisence(来自:阮一峰的博客)
上面的二叉树图比较清晰地展示了代码授权的具体流程,随着企业的规模化发展日趋成熟,企业应当规范自身的技术使用行为,尽可能避免专利纠纷带来的不利影响。
9.2 专利
▲ 2个著名的多媒体技术专利池
主流语音编解码技术拥有两个专利池:
1)MPEG-LA;
2)Via Licensing。
很多非常复杂的Codec涉及高达上千个专利,与之相关的企业或组织多达几十个,为专利授权而与每一个企业或组织进行洽谈显然是不现实的,因而专利池的出现使得技术授权更加规范清晰,方便企业统一处理技术授权问题。
9.3 常见Codec Patent License
希望大家在使用技术的同时尊重知识产权,助力技术创新可持续发展。
、讲稿PPT下载
(因无法上传附件,请从原文附件下载:
/thread--1-1.html)
附录:更多音视频技术资料
实时音视频开发的其它精华资料:
《实时语音聊天中的音频处理与编码压缩技术简述》
《网易视频云技术分享:音频处理与压缩技术快速入门》
《学习RFC:RTP/RTCP实时传输协议基础知识》
《基于RTMP数据传输协议的实时流媒体技术研究(论文全文)》
《声网架构师谈实时音视频云的实现难点(视频采访)》
《浅谈开发实时视频直播平台的技术要点》
《还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!》
《实现延迟低于毫秒的P实时音视频直播的实践分享》
《移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡》
《如何用最简单的方法测试你的实时音视频方案》
《技术揭秘:支持百万级粉丝互动的Facebook实时视频直播》
《简述实时音视频聊天中端到端加密(E2EE)的工作原理》
《移动端实时音视频直播技术详解(一):开篇》
《移动端实时音视频直播技术详解(二):采集》
《移动端实时音视频直播技术详解(三):处理》
《移动端实时音视频直播技术详解(四):编码和封装》
《移动端实时音视频直播技术详解(五):推流和传输》
《移动端实时音视频直播技术详解(六):延迟优化》