核心功能
本文将着重说明一些核心功能和基础概念,以帮助开发者更好的理解实时音视频产品
产品架构图
客户端功能
主要负责客户端的音视频采集、渲染、滤镜处理、编解码、传输等工作,客户可以快速集成到自己 App 中,让自己的应用具备音视频通话的能力。 支持 Android、iOS、Web ,集成 SDK 就可实现音视频的采集、编解码、渲染播放等工作,方便客户植入互动音视频服务 不在需要开发复杂的音视频底层逻辑,只需要调用七牛 SDK 的接口即可以快速完成开发; 包含直播丰富的扩展功能,例如:美颜、滤镜、面部特效。 此外,客户端 SDK 有丰富的扩展性、兼容性和自定义开发能力。客户不仅可以使用七牛免费提供的美颜和滤镜,也可以通过扩展功能,选择接入市面任何一家美颜、滤镜、面部特效的 SDK 供应商。
功能名称 | 说明 |
---|---|
音视频采集 | 涉及音视频采集过程中的各种操作及设置 |
房间管理 | 涉及房间的创建到销毁,全生命周期的管理 |
发布和订阅 | 涉及发布流和订阅流等常见媒体流操作 |
CDN 转推 | 涉及单路转推和合流转推的使用方法,用于将媒体流转推至cdn,进行旁路直播 |
背景音乐混音 | 涉及如何添加和移除背景音乐等操作,常用于娱乐类场景中 |
视频大小流 | 涉及音视频多码率的操作,常用于带宽紧张的场景中 |
服务端功能
服务端主要提供房间管理、状态回调等基本的业务功能,另外还提供鉴黄鉴暴、质量分析等配套功能 只需要集成对应语言的服务端 SDK 即可以管理实时音视频互动房间、调用配套数据处理服务、向客户端通知音视频流和数据处理的状态。业务服务器主要负责信令交互、音视频传输、代理加速等工作,保证音视频互动延时低,可用性高。
功能 | 说明 |
---|---|
roomToken | 在进入一个实时音视频房间之前,您需要通过自己七牛云账户的 AK/SK 签算出一个 roomToken。 |
应用管理 | 创建应用、获取应用信息、删除应用、更新应用信息。 |
房间管理 | 踢人、获取活跃房间、获取房间活跃用户 。 |
RTC-Pub | 可称为“在线媒体流接入”功能,可将允许将视频文件转推到RTC连麦房间内,供房间内的其他用户订阅。 |
单路转推 | 直接将房间中某路媒体流转推到CDN。 |
合流转推 | 设置合流的宽高、帧率、码率等信息,支持纯音频合流。 |
旁路直播 | 使用单路转推或合流转推后,可在直播云查看旁路直播情况。 |
录制存储 | 使用单路转推或合流转推后,可对旁路直播的媒体流内容进行录制存储。 |
内容审核 | 使用单路转推或合流转推后,可对旁路直播的媒体流内容进行鉴黄鉴暴恐,可参考内容审核 产品 |
质量监控 | 结合七牛大数据产品,提供多维度的质量数据监控和分析,可参考 机器数据分析平台 产品 |
实时互动网络
七牛基于直播云布局的全球丰富节点,推出了低延时互通的实时互动网络(包括丰富的云端配套功能),这是一种新型的专为实时传输而设计的网络架构,基于 UDP 协议。 通过在互联网上不同地区的数据中心放置软件组网单元,相互连接互相调度,在现有的公共互联网基础上构建一层新的虚拟网络。
七牛实时互动网络能够实时根据各节点的连接和传输状况、 负载状况以及到用户的距离和响应时间,自动分配最优、最通畅的传输路径,达到实时传输需要的质量保障级别。能应互联网实时传输的需求,尤其是在互联网信号不稳定,传输效率不佳的情况下,保证稳定传输及低延时。此外,七牛音视频团队基于对国内外各类营运商的了解,构建了一套非常稳定高效的调度机制,为整个实时互动流媒体网络找到最合适媒体。
以下介绍一些实时音视频中常用到的基本概念
应用
应用是您在七牛云实时音视频应用中的一个业务上的划分方式,以应用 ID(AppID) 作为唯一的标识符。一个 APP 或者项目使用一个应用,同一个 APP 的不同平台(iOS、Android、Windows、Web)可共享一个应用,无需重复创建。
您可以通过七牛控制台来进行应用的创建和编辑。如果您还没有注册七牛开发者平台,具体流程请参考七牛实时音视频云接入指南。
- 不同应用之间的数据不互通,房间也无法连通。
- 一个应用对应一个唯一的 AppID,AppID 可用于后续的排障以及 RoomToken 的签算等工作。
房间
房间是对音视频对话空间的抽象,用于隔离不同的通话过程,保障数据的安全及独立。同一房间内的用户可以互相接收对方的音视频数据。以 RoomName
为标识,需满足 ^[a-zA-Z0-9_-]{3,64}$
的规格。加入房间需要携带 RoomToken。
- 当用户加入的房间不存在时,七牛后台服务会自动创建对应的房间。
- 若房间内的所有用户都已离开,那么房间维持空状态 10s 后将会自动关闭。
- 若房间为服务端创建,且创建后无用户进入,那么房间维持空状态 30s 后将会自动关闭。
- 若房间内的用户由于断网等原因,30s 未向七牛后台服务通信,则该用户将被视为退出房间。
UserID
UserID 是实时音视频通话房间内用户的唯一标识。
- UserID 支持字母、数字、中划线、下划线,区分大小写。
- 同一房间内 UserID 唯一,若有重复,则根据七牛控制台上应用对自动踢人配置,做相应的处理。
RoomToken
RoomToken 是加入房间需要携带的凭证信息,是基于 AppID、RoomName、UserID 以及过期时间等信息按照一定规则生成的,其具体的签算方式可参考 RoomToken 签发服务。
Track
Track 代表音视频通话过程中的一条音频轨或者一条视频轨,是音视频通话的最小单位。
- 一个用户可以创建多条音视频的 Track,如摄像头视频 Track、录屏视频 Track 和麦克风音频 Track 等
- 音频 Track 仅支持创建一路,重复创建将创建失败
发布
发布是指将创建好的音视频 Track 对应的音视频数据推送到七牛实时音视频服务的操作,执行发布操作后,远端用户可以选择性的进行订阅观看。
不同于 CDN 推流,此处的发布指的是房间内的音视频数据推送,将不会产生 rtmp 的直播观看地址
订阅
订阅是指向七牛实时音视频服务请求拉取远端发布的音视频数据的操作。订阅后,本地即可实时的接收远端发布的音视频数据。
不同于 rtmp 拉流观看,此处的订阅指的是房间内的音视频数据接收,是基于实时性更好的 RTP 协议进行传输的
CDN 推流
单路转推
单路转推是指将客户端推送的一路音频 Track 和一路视频 Track 在服务端直接进行协议转换,再经由 CDN 分发的场景。由于不涉及服务端转码合流的操作,因此仅会产生单路转推场景的费用,费用相关可参考单路转推费用文档。更详细的说明可参考使用指南相关文档。
单路转推最多仅支持一路音频和一路视频的 CDN 分发,无法进行多路画面和多路音频的合流操作
合流转推
合流转推是指将房间内的多路音频进行混音,多路视频进行合流,再以 rtmp 推流的形式经由 CDN 分发的场景。该场景涉及到服务端的合流操作,将会产生合流相关的费用,费用相关可参考合流转推费用文档。更详细的说明可参考使用指南相关文档。
大小流
大小流是指用户发布视频 Track 时,基于该 Track 推送多路不同分辨率的视频码流,订阅端用户可以根据自己的需求选择订阅该 Track 的其中一路视频流。例如本地网络较差时,可选择订阅低分辨率的流;网络较好时,则可以选择订阅高分辨率的流。更详细的说明可参考使用指南相关文档。
订阅时指定的 profile 仅为预期设置,实际订阅是否成功,以 Track 相关回调通知的实际结果为准。