RTC 实时音视频技术知识全面盘点
Posted Android每日一讲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
有需要完整版 高级音视频开发思维导图及学习手册 的朋友可以私信发送:“架构图” 或 “进阶” 即可 直达获取
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
最后祝各位开发者早日精通音视频开发 ,攀登上更高的高峰
融云 IM & RTC 能力上新盘点
融云产品播报,盘点点滴努力,进步步履不停。关注【融云全球互联网通信云】了解更多
融云 IM 即时通讯和 RTC 实时音视频 2022H1 核心能力上新盘点,换个切面整体观察融云产品力提升路径。
请看详细报道——
融云 IM 即时通讯能力上新
重磅推出超级群服务,上线 IMKit Web SDK,进一步提升了功能多样性及平台全覆盖。
SDK 能力
超级群重磅上线
超级群(UltraGroup)提供了一种新的群组业务形态,支持在群会话中创建独立的频道,超级群的消息数据和群组成员支持分频道进行聚合,各个频道之间消息独立。
应用场景:允许用户在超级社群中根据自己的兴趣加入不同的频道,在海量信息中聚焦自己感兴趣的内容,是构建兴趣社群、游戏社区、粉丝社群等大型用户运营社区利器。
超级群特性
- 群成员人数不设限
- App 内的超级群数量没有限制
- 一个超级群里支持创建多个频道
- 成员可在任意频道中发送消息,频道间的消息相互隔离
- 支持单人/全体成员禁言
- 支持为指定的群,或群频道设置免打扰
平台及版本:iOS + Android + Web + 小程序,V5.2.0 版本起
增加 IM 聊天室与 RTC 音视频房间绑定接口
聊天室与音视频房间绑定成功后,只要音视频房间仍存在,则阻止聊天室自动销毁。
应用场景:聊天室具有自动销毁机制。在使用融云语聊房、直播业务的 App 中,可能会配合使用 IM SDK 的聊天室业务实现直播聊天、弹幕、属性记录等功能。这种情况下,可以考虑将聊天室与音视频房间绑定,确保聊天室不会在语聊、直播结束前销毁,以免丢失关键数据。
平台及版本:iOS + Android + Web + 小程序,V5.2.1 版本起
IMKit Web 端 SDK
IMKit Web 端 SDK,囊括单群聊、系统通知能力,内含高品质 UI,提供文本、表情、图片、GIF、语音、视频、引用、文件、位置等多种内置消息类型,并支持自定义消息满足客户个性化的消息发送、展示需求。
可满足开发者 Web 端快速上线开展业务的需求。
IMKit Web 特性
- 常用会话列表功能全覆盖
对会话消息未读数处理、会话置顶、会话免打扰、全局消息内容搜索等常用会话列表功能进行了 UI 封装,功能完整,产品化程度高。
- 单群聊会话界面开箱即用
提供标准化的一对一、多人群组 UI 聊天界面,封装了复杂的消息输入、内容展示逻辑等,开发者无需二次开发,开箱即用。
- 消息类型完整封装
内置文本、表情、图片、语音、位置、GIF、小视频等各种消息类型及 UI 展示处理逻辑,也可通过自定义消息功能实现特殊的消息发送、展示需求。
- 支持 UI 自定义
提供高品质 UI 及交互使用体验,并在标准化 UI 外支持高度自定义,可根据应用 UI 风格,灵活设置 UI 显示样式。
- 支持多种语言切换
支持多语言切换,目前提供中文、英文、阿拉伯语,为有出海需求的客户提供更好的使用体验。
- 支持一键接入音视频
完美承接融云一对一、多对多音视频通话能力,极简的音视频功能接入流程,提供单聊、群聊会话的音视频通话能力。
- 学习成本低,集成上线快
产品化程度高,功能完整,开箱即用;仅需几行代码,快速完成集成。
平台及版本:IMKit SDK Web 独立版本
IMKit 支持禁用内置 Emoji
SDK 从 5.2.3 开始支持禁用内置 Emoji,如开发者不想使用内置的 Emoji 可以选择禁用,禁用后表情面板不再显示 Emoji 标签页。
但开发者仍可以通过集成融云提供的 Emoji 模块,完全自定义适配新表情,无需额外代码。
平台及版本:iOS + Android,V5.2.3 版本起
IMKit 支持位置插件
从 IMKit 5.2.3 及之后开始支持新版 locationKit 插件,如开发者需要使用位置功能,可配置自己的高德地图 SDK 帐号集成使用。融云不再提供默认的高德地图开发账号。
IMKit 5.2.3 之前版本升级到 5.2.3 时,旧版地图插件即失效。如集成新版插件,请务必将原来集成的 Jar 包删除,否则会导致编译失败。
平台及版本:iOS + Android,V5.2.3 版本起
(下载位置插件)
全局免打扰能力升级
SDK 支持为当前用户设置从任意时间点(HH:MM:SS)开始后的一段时间为全局免打扰时段,最长支持 24 小时。
如果客户端处于离线状态,融云服务端将不会进行推送通知。
「全局免打扰时段」为用户级别的免打扰设置,且具有具有最高优先级。在用户设置了「全局免打扰时段」时,均以此设置的免打扰级别为准。
同时支持设置全局免打扰。
- 仅针对@消息进行通知,包括@指定用户和@所有人的消息。如果消息所属会话类型为单聊,则代表不通知。
- 如未设置,SDK 会依次查询消息所属会话的用户级别免打扰设置,再判断是否需要推送通知。默认为所有消息都通知。
- 新增设置项:不接收通知,即使为@消息也不推送通知。
应用场景:如客户希望在非工作时间或休息时间不被打扰,但又不希望错过重要的消息,此时可以通过消息免打扰功能,通过灵活的配置来实现
平台及版本:iOS + Android,V5.2.2 版本起
Server 能力
推送备注名服务
设置目标用户的备注名(单次可设置最多100 个备注名),在收到目标用户推送通知中就会显示备注名,极大提升用户体验
应用场景:在社交等场景下,假设接收者与发送者互为好友,接收者可能希望在推送通知中将发送者名称显示为个性化名称(如好友昵称)。
通过设置用户级推送备注名功能,可以将接收者用户为其他用户设置的个性化名称配置到融云推送服务中。配置成功后,推送通知中将显示自定义的推送备注名。
翻译功能
提供翻译插件,可为 IMLib 与 IMKit SDK 快速接入外部翻译服务,由融云服务端负责对接外部翻译服务供应商的鉴权、API 调用、账号管理、计费等流程。翻译插件支持翻译文本。
IMKit SDK 提供翻译 UI。
应用场景:出海场景中,用户多语言会话场景中,可以集成翻译插件,有效提升沟通效率,避免出现理解偏差。
支持范围:支持全球 60 多种语言,百分百支持主要语言,几乎覆盖全部有效用户人群。
单聊禁言
设置指定用户单聊会话场景下禁言,禁言后用户无法发送单聊消息。
应用场景:如用户在单聊场景下出现违规行为,管理员可以将用户禁言,阻止违规行为继续发生。
Token 失效
Token 默认永久有效,新增设置指定用户在某个时间点之前获取的 Token 失效的功能。
用户当前连接融云的情况下,设置后用户不会掉线,下次用户连接时需要重新获取 Token。
应用场景:增加了 Token 管理的安全性,避免 Token 丢失。
融云 RTC 实时音视频能力上新
提供网络探测能力,上线功能完善的美颜和变声能力,更好地支持社交泛娱乐应用开展业务。
SDK 能力
RTC 网络探测
RTCLib SDK 提供 startRTCProbeTest 方法,支持用户在加入房间前进行网络质量探测,然后通过回调将当前网络质量的相关数据,包括往返时延、上下行丢包率、上下行网络带宽等数据返回给上层应用。
应用场景:在对网络质量要求高的场景下,在加入房间前进行网络质量探测,以保证通信过程的顺畅进行。
平台及版本:iOS + Android,5.1.16 版本起
美颜插件
上线强大的美肤、美型、滤镜等功能:
基础美颜
- 美肤功能:2 款磨皮效果、美白、红润。
- 基础滤镜功能:提供不少于 45 款基础滤镜。
- 所有美颜效果参数可调节。
高级美颜
- 美肤功能:3 款磨皮效果、美白、红润、镜化、亮眼、美牙、去黑眼圈、去法令纹。
- 美型功能:包括大眼、圆眼、5 款脸型调整、瘦颧骨、瘦下颌骨、额头调整、下巴调整、瘦鼻、嘴巴调整、开眼角、眼距、眼睛角度、长鼻,缩人中、微笑嘴角等。
- 美颜滤镜功能:提供丰富的滤镜效果,不少于 75 款基础滤镜。
- 提供专业便携的制作工具,支持用户自定义滤镜道具。
应用场景:目前已广泛应用于视频直播、短视频拍摄、场景营销、拍照应用、在线教育等领域。
平台及版本:支持 iOS 、Android、uni-app 多平台。
新增六种变声特效
音效插件(VoiceBeautifier)新增变声六种特效:大叔、老男孩、小男孩、小姐姐、小女孩、猪八戒。
应用场景:在休闲娱乐类应用中通过变声、美声、混响等功能增加互动的趣味性;在狼人杀等特定场景中,可以为不同角色的扮演加分。
Web 端支持跨房间连麦功能
Web RTC SDK 自 5.3.0 版本起,支持跨房间连麦功能,不同房间主播可加入对端房间进行连麦通话。房间中的所有主播可以看见彼此,房间中的观众可以看到所有主播。
应用场景:在直播场景中,需要跨房连麦来支持不同直播间的主播实时互动,适用于连麦 PK、实时合唱等场景,增加直播趣味性。
平台及版本:Web RTC Lib 5.3.0版本起
Server 能力
占位水印
服务端合流服务在收不到某个用户的视频数据时,会使用设置的占位水印来填充画面。
支持文字水印和图片水印(文字水印叠加显示在图片水印上层)。
应用场景:连麦场景下,当连麦者关闭摄像头或取消发布视频流时,使用占位水印填充画面黑屏,优化观众端用户体验。
优化云录制使用体验
录制视频格式支持 hls 格式,支持指定录制文件的存储目录。
新增获取 CDN 拉流地址 API
使用融云 CDN 服务时,通过获取 CDN 拉流地址 API 获取某个直播间的完整拉流地址。
应用场景:
- 小程序 CDN 拉流,用于通过小程序导流
- 直播监控平台,查看各主播直播情况
- 进入直播间前的列表预览播放
- 后台小窗播放直播流
以上是关于RTC 实时音视频技术知识全面盘点的主要内容,如果未能解决你的问题,请参考以下文章
2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?
2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?