human: 如何处理七牛云的实时音视频API 概览

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > Web >API 概览

#  API 概览

最近更新时间: 2022-07-14 14:31:43

QNWebRTC 是七牛推出的一款适用于 web 平台的音视频通话 SDK，提供了包括音视频通话、静音、发布、订阅等多种功能，基于此
SDK，您可以很方便地在 Web 上开发出一款基于实时音视频的应用。

> 本文档适用于 QNWebRTC 4.x 版本的 SDK，并不向下兼容。
>
> QNWebRTC 4.x 是在 2.x 的基础上进行了 API 的重构和优化，从而使使用者能够更加高效的接入，所以新接入的用户推荐使用最新版本的
> SDK。
>
> 老用户也可以继续使用 QNWebRTC 2.x 版本，我们也会持续在此版本上进行问题修复和版本更迭，但是后续的一些新功能有可能并不会在 2.x
> 版本上提供。

QNRTC

[QNRTC](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070/WebQNRTC)
提供 SDK 的入口方法，可以通过它进行 SDK 的初始化，各个类型 Track 的创建等操作。其核心方法如下：

初始化

方法 | 描述  
---|---  
[createClient](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 创建 QNRTCClient 对象  
  
创建 Track

方法 | 描述  
---|---  
[createCameraVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 通过摄像头采集的视频创建一个视频轨道  
[createMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 通过麦克风采集的音频创建一个音频轨道  
[createScreenVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 创建用于屏幕共享的视频轨道  
[createMicrophoneAndCameraTracks](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 同时采集麦克风音频和摄像头视频轨道  
[createBufferSourceAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 通过外部音频数据创建一个音频轨道  
[createCustomAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 创建一个自定义的音频轨道  
[createCustomVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 创建一个自定义的视频轨道  
  
传输模式

方法 | 描述  
---|---  
[setTransportPolicy](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070) | 设置传输模式  
  
QNRTCClient

[QNRTCClient](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090/WebQNRTCClient)
提供和房间相关的一系列的方法，通过它我们可以实现加入房间，在房间内发布或者订阅相应的音视频轨道等操作。核心方法如下：

核心方法

方法 | 描述  
---|---  
[join](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 加入房间  
[leave](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 离开房间  
[publish](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 发布本地 Track  
[unpublish](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 取消发布本地 Track  
[subscribe](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 订阅远端 Track  
[unsubscribe](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 取消订阅远端 Track  
[sendMessage](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 发送自定义消息  
  
转推 CDN

方法 | 描述  
---|---  
[startDirectLiveStreaming](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 开启单路转推  
[stopDirectLiveStreaming](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 停止单路转推  
[startTranscodingLiveStreaming](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 开启合流转推  
[stopTranscodingLiveStreaming](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 停止合流转推  
[setTranscodingLiveStreamingTracks](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 新增、更新合流转推的 Tracks  
[removeTranscodingLiveStreamingTracks](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 删除合流转推的 Tracks  
  
跨房连麦

方法 | 描述  
---|---  
[setClientMode](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 设置跨房连麦场景  
[setClientRole](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 设置互动直播场景下的用户角色  
[startMediaRelay](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 开始跨房媒体转发  
[updateMediaRelay](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 更新跨房媒体转发  
[stopMediaRelay](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 停止跨房媒体转发  
  
QNLocalTrack 类

[QNLocalTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9085/WebQNLocalTrack)
是本地创建的一个音视或者视频轨道，可以通过
[QNRTC](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9070/WebQNRTC)
来创建各种类型的音视频轨道，例如麦克风采集的音频轨道，摄像头采集的视频轨道，或者屏幕采集的视频轨道等等，我们真正用到的是它所衍生的子类。

以
[QNLocalTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9085/WebQNLocalTrack)
为基类，向下衍生的子类如下：

Hierarchy

  * [QNLocalTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9085/WebQNLocalTrack)
    * [QNLocalVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9061/WebQNLocalVideoTrack)
      * [QNCameraVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9068/WebQNCameraVideoTrack)
      * [QNScreenVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9092/WebQNScreenVideoTrack)
      * [QNCustomVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9088/WebQNCustomVideoTrack)
    * [QNLocalAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9089/WebQNLocalAudioTrack)
      * [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9064/WebQNMicrophoneAudioTrack)
      * [QNBufferSourceAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9069/WebQNBufferSourceAudioTrack)
      * [QNCustomAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9091/WebQNCustomAudioTrack)

  * 本地音频轨道 | 描述  
---|---  
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9064/WebQNMicrophoneAudioTrack) | 以麦克风采集到的音频数据为数据源创建的音频轨道，通过 QNRTC.createMicrophoneAudioTrack 创建。  
[QNBufferSourceAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9069/WebQNBufferSourceAudioTrack) | 以外部导入的音频数据为数据源创建的音频轨道，通过 QNRTC.createBufferSourceAudioTrack 创建。  
[QNCustomAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9091/WebQNCustomAudioTrack) | 通过自定义的 MediaStreamTrack 对象创建的音频轨道，通过 QNRTC.createCustomAudioTrack 创建。  
本地视频轨道 | 描述  
---|---  
[QNCameraVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9068/WebQNCameraVideoTrack) | 以摄像头采集到的视频数据为数据源创建的视频轨道，通过 QNRTC.createCameraVideoTrack 创建。  
[QNScreenVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9092/WebQNScreenVideoTrack) | 以屏幕采集到的视频数据为数据源创建的视频轨道，通过 QNRTC.createScreenVideoTrack 创建。  
[QNCustomVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9088/WebQNCustomVideoTrack) | 通过自定义的 MediaStreamTrack 对象创建的音频轨道，通过 QNRTC.createCameraVideoTrack 创建。  

QNRemoteTrack 类

[QNRemoteTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9082/WebQNRemoteTrack)
是远端用户创建的音视频轨道，本地用户可以通过房间中的事件回调获取。其衍生的子类如下：

Hierarchy

  * [QNRemoteTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9082/WebQNRemoteTrack)
    * [QNRemoteVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9060/WebQNRemoteVideoTrack)
    * [QNRemoteAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9087/WebQNRemoteAudioTrack)

  * 远端音视频轨道 | 描述  
---|---  
[QNRemoteVideoTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9060/WebQNRemoteVideoTrack) | 远端用户发布的音频轨道。  
[QNRemoteAudioTrack](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9087/WebQNRemoteAudioTrack) | 远端用户发布的视频轨道。  

QNRTCClientEvent

[QNRTCClient](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090/WebQNRTCClient)
继承于 EventEmitter，通过监听一系列事件，触发对应回调函数,例如：

    
    
    client.on('user-joined', function(remoteUserID, userData) {
        console.log('user-joined', remoteUserID, userData)
    })

  * 事件 | 描述  
---|---  
[user-joined](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 用户加入房间  
[user-left](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 用户离开房间  
[user-published](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 用户发布 Tracks  
[user-unpublished](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 用户取消发布 Tracks  
[connection-state-changed](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 与房间的连接状态改变  
[message-received](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 收到自定义消息  
[user-reconnecting](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 远端用户重连中  
[user-reconnected](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 远端用户重连成功  
[direct-livestreaming-state-changed](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 单路转推状态变化  
[transcoding-livestreaming-state-changed](https://developer.qiniu.com/rtc/9246/WEB%20API%20%E6%A6%82%E8%A7%88/9090) | 合流转推状态变化  

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