RTC-实时音视频技术知识全面盘点
RTC 实时音视频技术知识全面盘点
引言
随着 移动网络速度越来越快、质量越来越来好 , 实时音视频技术 已经在各种 应用场景 下全面开花, 语音通话、视频通话、视频会议、远程白板、远程监控 等等
实时音视频是什么?
RTC(Real Time Communication)实时通信业务 , 目的 是在设备端实时的转发音视频多媒体数据,让 用户能实时的进行音频和视频的会话
HaaS RTC 是 阿里云 IoT 联合视频云开发的 IoT 设备端上的实时通讯服务
音视频有什么功能?
从功能流程上来讲:
包含了 采集、编码、前后处理、传输、解码、缓冲、渲染 等诸多环节
当各式 智能硬件、移动应用以及 Web App 中的许多模块都越来越依赖于 音视频技术 , 实时通信 已然成为了 所有行业 的一大 基础设施 ,不仅仅是在 直播、游戏这些泛娱乐行业 ,更渗透到 在线医疗、教育、金融 等领域;在不同场景下,推动着人们沟通互动方式的改变
丢包补偿技术:
丢包补偿技术可以分为两类:
基于发送端补偿和基于接受端补偿
基于发送端补偿包括前向差错纠正、交织和重传技术
基于接受端补偿包括了多种错误隐蔽算法
基于发送端补偿可以分为 两类: 主动重传和被动通道编码
- 被动通道编码 包含传统的前向差错纠正技术(FEC)和基于交织的技术
- 按照和媒体内容的关系 ,前向差错纠正包括与媒体无关的方法和利用音频属性的媒体相关方法
非交互式应用
对于非交互式的语音应用 ,比如 多点广播 ,对延时的要求没有音质高; 交织 是强烈推荐的 丢包补偿技术 ,对于交织后的语音,还要采用合适的错误隐蔽算法;与媒体无关的前向误差纠正技术也适合这种应用
交互式应用
交互式的应用比如 IP 电话、即时通讯应用中的实时语音聊天等 ,对 延时 很敏感,因此,交织和与媒体无关的前向误差纠正技术都不适合这种应用
- 媒体相关的前向误差纠正技术只引入很小的延时和较小的带宽增加,是较好的选择,可以利用低比特率的次要编码器获得丢包补偿效果
- 另外,还可以采用带有衰减的包重复法等效果较好计算简单的错误隐蔽算法进一步提高音质。
以直播场景来举例:
- 例如主播1往视频云上推流,观众拉流观看,即形成了 单向直播的场景 ;观众能够看到主播,但是主播看不到观众
- 另外一种像刚才一样,主播1推流出去,观众拉流观看,其中观众1希望能和主播1视频连麦互动,这时观众1也会推一路流出去,主播将观众1的音视频流拉下来观看,这样他们之间就构成了一个 相互拉流观看的场景,相互都能看见对方 ;同时他们两个的音视频流会被实时的内容分发网络分发给观众来观看
归根结底:实时音视频就是说实时马上能看到
- 在整个直播或点播过程中 ,最好有 实时统计数据,包括网络类型,机器信息,实时网络状况,帧率,码率,分辨率 等。这样可以分析遇到的各种问题,特别是对于 直播场景,当网络波动,出现卡顿 时,可以为动态调整 qos 提供依据
- 对于实时音视频直播场景 ,采用 qos 策略,动态调整编码参数 ;包括 帧率,码率,分辨率,缓冲区 ;当直播出现卡顿,采用快降慢升的策略,当网络波动比较厉害,这样可以避免编码参数频繁的来回调整,造成恶性循环
实时音视频应用场景
随着接触到的客户越来越多,在行业里发展的越来越深 ,我们发现, 音视频技术 的 应用场景 远比想象中的多,应用规模也越来越大
也让大家意识到: 音视频技术不仅局限用于会议系统这样的商业领域,也不仅仅是社交群聊, 还能用在以下场景中
- 音视频通话
- 产品功能
- 1V1,多人音视频通话
- 可以美颜、使用道具等等
实时音视频技术特点
- 支持设备差异性大
- 网路接入经常切换
综合以上使用场景,可以看到,实时音视频技术已经融于各行各业
然而,在 接触客户 的过程中,我们发现很多客户 排斥 接入一个新技术,觉得 技术和新场景 结合起来非常 痛苦 ,需要 开发团队 需要对 原有业务进行改造 ,而这个 改造的动作 ,造成了 产品业务体验的差异 ,后续开发新的产品就有可能 返工重造,扩展很不平滑,用户感受也不愉快,这种其实就是有形的技术
而 实时音视频 要做的就是将 技术无缝融合到业务场景中 ,通过 业务与技术结合 , 推动产品的持续发展,来增强用户的体验 ,而不是让其变得更差
今天有关于 实时音视频技术知识 的相关内容就介绍到这里了,为了帮助大家了解更多 实时音视频开发 必备的 技术知识 ,这里 特别提供 一份由 腾讯大佬 所整理的一张 高级音视频开发思维导图 及其 配套 的一份 学习手册 ;里面包含了许多 音视频开发 所需的 技术知识点 ,有需要这份 思维导图及学习手册的朋友: 可以私信发送 “架构图”或 “进阶” 即可 直达获取 ;希望大家看完之后能够提供一些帮助
内容展示如下:
高级音视频开发思维导图
高清版 高级音视频开发思维导图 获取方式 :私信发送 “架构图” 即可 直达获取
FFmpeg 编译过程
- 准备资料
- ndk 环境配置
- 编写脚本文件
FFmpeg 引入 AndroidStudio
- 新建项目
- 配置 build.gradle
- 配置 CMakeLists.txt 文件
- 编写测试代码(头文件一定要用 extern 包含住)
完整版 高级音视频开发学习手册 获取方式 :私信发送 “进阶” 即可 直达获取
音视频格式封装原理
- 视频解码基础 01 -封裝格式
- 视频文件封装格式
- 音视频编码方式简介
- 视频编码方式
- 音频编码方式
- MP3
- AAC
- WMA
有需要完整版 高级音视频开发思维导图及学习手册 的朋友可以 私信 发送: “架构图” 或 “进阶” 即可 直达获取
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
最后祝各位开发者早日精通音视频开发 ,攀登上更高的高峰