human: 如何处理七牛云的实时音视频核心功能

gpt: [实时音视频](https://developer.qiniu.com/rtc) > 产品简介 > 核心功能

#  核心功能

最近更新时间: 2021-11-12 16:16:43

本文将着重说明一些核心功能和基础概念，以帮助开发者更好的理解实时音视频产品

# 产品架构图

![jiagou.png](https://dn-odum9helk.qbox.me/FoO1Y_I1DfXG9q_EwA6W6ratN8mX)

# 客户端功能

主要负责客户端的音视频采集、渲染、滤镜处理、编解码、传输等工作，客户可以快速集成到自己 App 中，让自己的应用具备音视频通话的能力。 支持
Android、iOS、Web ，集成 SDK 就可实现音视频的采集、编解码、渲染播放等工作，方便客户植入互动音视频服务
不在需要开发复杂的音视频底层逻辑，只需要调用七牛 SDK 的接口即可以快速完成开发； 包含直播丰富的扩展功能，例如：美颜、滤镜、面部特效。 此外，客户端
SDK 有丰富的扩展性、兼容性和自定义开发能力。客户不仅可以使用七牛免费提供的美颜和滤镜，也可以通过扩展功能，选择接入市面任何一家美颜、滤镜、面部特效的
SDK 供应商。

功能名称 | 说明  
---|---  
音视频采集 | 涉及音视频采集过程中的各种操作及设置  
房间管理 | 涉及房间的创建到销毁，全生命周期的管理  
发布和订阅 | 涉及发布流和订阅流等常见媒体流操作  
CDN 转推 | 涉及单路转推和合流转推的使用方法，用于将媒体流转推至cdn，进行旁路直播  
背景音乐混音 | 涉及如何添加和移除背景音乐等操作，常用于娱乐类场景中  
视频大小流 | 涉及音视频多码率的操作，常用于带宽紧张的场景中  
  
# 服务端功能

服务端主要提供房间管理、状态回调等基本的业务功能，另外还提供鉴黄鉴暴、质量分析等配套功能 只需要集成对应语言的服务端 SDK
即可以管理实时音视频互动房间、调用配套数据处理服务、向客户端通知音视频流和数据处理的状态。业务服务器主要负责信令交互、音视频传输、代理加速等工作，保证音视频互动延时低，可用性高。

功能 | 说明  
---|---  
roomToken | 在进入一个实时音视频房间之前，您需要通过自己七牛云账户的 AK/SK 签算出一个 roomToken。  
应用管理 | 创建应用、获取应用信息、删除应用、更新应用信息。  
房间管理 | 踢人、获取活跃房间、获取房间活跃用户 。  
RTC-Pub | 可称为“在线媒体流接入”功能，可将允许将视频文件转推到RTC连麦房间内，供房间内的其他用户订阅。  
单路转推 | 直接将房间中某路媒体流转推到CDN。  
合流转推 | 设置合流的宽高、帧率、码率等信息，支持纯音频合流。  
旁路直播 | 使用单路转推或合流转推后，可在直播云查看旁路直播情况。  
录制存储 | 使用单路转推或合流转推后，可对旁路直播的媒体流内容进行录制存储。  
内容审核 | 使用单路转推或合流转推后，可对旁路直播的媒体流内容进行鉴黄鉴暴恐，可参考[内容审核 __](https://www.qiniu.com/products/censor)产品  
质量监控 | 结合七牛大数据产品，提供多维度的质量数据监控和分析，可参考 [机器数据分析平台 __](https://www.qiniu.com/products/pandora)产品  
  
# 实时互动网络

七牛基于直播云布局的全球丰富节点，推出了低延时互通的实时互动网络（包括丰富的云端配套功能），这是一种新型的专为实时传输而设计的网络架构，基于 UDP 协议。
通过在互联网上不同地区的数据中心放置软件组网单元，相互连接互相调度，在现有的公共互联网基础上构建一层新的虚拟网络。  
七牛实时互动网络能够实时根据各节点的连接和传输状况、
负载状况以及到用户的距离和响应时间，自动分配最优、最通畅的传输路径，达到实时传输需要的质量保障级别。能应互联网实时传输的需求，尤其是在互联网信号不稳定，传输效率不佳的情况下，保证稳定传输及低延时。此外，七牛音视频团队基于对国内外各类营运商的了解，构建了一套非常稳定高效的调度机制，为整个实时互动流媒体网络找到最合适媒体。

以下介绍一些实时音视频中常用到的基本概念

# 应用

**应用** 是您在七牛云实时音视频应用中的一个业务上的划分方式，以**应用 ID(AppID)** 作为唯一的标识符。**一个 APP
或者项目使用一个应用** ，同一个 APP 的不同平台（iOS、Android、Windows、Web）可共享一个应用，无需重复创建。

您可以通过[七牛控制台](https://portal.qiniu.com/rtn/app)来进行**应用的创建和编辑**
。如果您还没有注册七牛开发者平台，具体流程请参考[七牛实时音视频云接入指南](https://doc.qnsdk.com/rtn/docs/rtn_startup)。

>   * 不同应用之间的数据不互通，房间也无法连通。
>   * 一个应用对应一个唯一的 AppID，AppID 可用于后续的排障以及 RoomToken 的签算等工作。
>

# 房间

**房间** 是对音视频对话空间的抽象，用于隔离不同的通话过程，保障数据的安全及独立。同一房间内的用户可以互相接收对方的音视频数据。以 `RoomName`
为标识，需满足 `^[a-zA-Z0-9_-]{3,64}$` 的规格。**加入房间需要携带RoomToken**。

>   * 当用户加入的房间不存在时，七牛后台服务会自动创建对应的房间。
>   * 若房间内的所有用户都已离开，那么房间维持空状态 10s 后将会自动关闭。
>   * 若房间为服务端创建，且创建后无用户进入，那么房间维持空状态 30s 后将会自动关闭。
>   * 若房间内的用户由于断网等原因，30s 未向七牛后台服务通信，则该用户将被视为退出房间。
>

# UserID

**UserID** 是实时音视频通话房间内用户的唯一标识。

>   * UserID 支持字母、数字、中划线、下划线，区分大小写。
>   * 同一房间内 UserID
> 唯一，若有重复，则根据[七牛控制台上应用](https://portal.qiniu.com/rtn/app)对自动踢人配置，做相应的处理。
>

# RoomToken

**RoomToken** 是加入房间需要携带的凭证信息，是基于 AppID、RoomName、UserID
以及过期时间等信息按照一定规则生成的，其具体的签算方式可参考 [RoomToken
签发服务](https://developer.qiniu.com/rtc/development_guidelines/8813/roomToken)。

# Track

**Track** 代表音视频通话过程中的**一条音频轨** 或者**一条视频轨** ，是音视频通话的最小单位。

>   * 一个用户可以创建多条音视频的 Track，如摄像头视频 Track、录屏视频 Track 和麦克风音频 Track 等
>   * 音频 Track 仅支持创建一路，重复创建将创建失败
>

# 发布

**发布** 是指将创建好的音视频 Track 对应的音视频数据推送到七牛实时音视频服务的操作，执行发布操作后，远端用户可以选择性的进行订阅观看。

> 不同于 CDN 推流，此处的发布指的是房间内的音视频数据推送，将不会产生 rtmp 的直播观看地址

# 订阅

**订阅** 是指向七牛实时音视频服务请求拉取远端发布的音视频数据的操作。订阅后，本地即可实时的接收远端发布的音视频数据。

> 不同于 rtmp 拉流观看，此处的订阅指的是房间内的音视频数据接收，是基于实时性更好的 RTP 协议进行传输的

# CDN 推流

## 单路转推

**单路转推** 是指将客户端推送的一路音频 Track 和一路视频 Track 在服务端直接进行协议转换，再经由 CDN
分发的场景。由于不涉及服务端转码合流的操作，因此仅会产生单路转推场景的费用，费用相关可参考[单路转推费用文档](https://developer.qiniu.com/rtc/product_introduction/8804/pd-
price#4)。更详细的说明可参考使用指南相关文档。

> 单路转推最多仅支持一路音频和一路视频的 CDN 分发，无法进行多路画面和多路音频的合流操作

## 合流转推

**合流转推** 是指将房间内的多路音频进行混音，多路视频进行合流，再以 rtmp 推流的形式经由 CDN
分发的场景。该场景涉及到服务端的合流操作，将会产生合流相关的费用，费用相关可参考[合流转推费用文档](https://developer.qiniu.com/rtc/product_introduction/8804/pd-
price#5)。更详细的说明可参考使用指南相关文档。

# 大小流

**大小流** 是指用户发布视频 Track 时，基于该 Track 推送多路不同分辨率的视频码流，订阅端用户可以根据自己的需求选择订阅该 Track
的其中一路视频流。例如本地网络较差时，可选择订阅低分辨率的流；网络较好时，则可以选择订阅高分辨率的流。更详细的说明可参考使用指南相关文档。

> 订阅时指定的 profile 仅为预期设置，实际订阅是否成功，以 Track 相关回调通知的实际结果为准。

以上内容是否对您有帮助？