human: 如何处理七牛云的实时音视频QNRTC

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

#  QNRTC

最近更新时间: 2023-07-05 12:41:36

QNRTC 是 SDK 的入口，提供了 SDK 配置，创建本地音视频轨道，创建房间对象等一系列方法。

Index

Properties

  * VERSION

Callbacks

  * onCameraChanged
  * onMicrophoneChanged
  * onPlaybackDeviceChanged

Core Methods

  * isBrowserSupported
  * checkSystemRequirements
  * setLogLevel
  * isChromeExtensionAvailable
  * createClient
  * getCameras
  * getMicrophones
  * getPlaybackDevices
  * getDevices
  * createCameraVideoTrack
  * createMicrophoneAudioTrack
  * createScreenVideoTrack
  * createMicrophoneAndCameraTracks
  * createBufferSourceAudioTrack
  * createCanvasVideoTrack
  * createCustomAudioTrack
  * createCustomVideoTrack
  * checkAudioTrackIsActive
  * checkVideoTrackIsActive
  * setTransportPolicy
  * getElectronScreenSources
  * createDeviceManger

Properties

VERSION

  * VERSION: string
  * 获取 SDK 版本号

Callbacks

onCameraChanged

  * onCameraChanged: undefined | (info: QNDeviceInfo) => void
  * 摄像头变化回调，提示有摄像头被添加或移除
    
        QNRTC.onCameraChanged = function(info) {
        console.log('camera changed!', info);
    };

Parameters

    * info: [QNDeviceInfo](https://developer.qiniu.com/rtc/9070/WebQNRTC/9054/WebQNDeviceInfo)

设备信息

onMicrophoneChanged

  * onMicrophoneChanged: undefined | (info: QNDeviceInfo) => void
  * 麦克风变化回调，提示有麦克风被添加或移除
    
        QNRTC.onMicrophoneChanged = function(info) {
        console.log('microphone changed!', info);
    };

Parameters

    * info: [QNDeviceInfo](https://developer.qiniu.com/rtc/9070/WebQNRTC/9054/WebQNDeviceInfo)

设备信息

onPlaybackDeviceChanged

  * onPlaybackDeviceChanged: undefined | (info: QNDeviceInfo) => void
  * 播放设备变化回调，提示有音频播放设备被添加或移除
    
        QNRTC.onPlaybackDeviceChanged = function(info) {
        console.log('speaker changed!', info);
    };

Parameters

    * info: [QNDeviceInfo](https://developer.qiniu.com/rtc/9070/WebQNRTC/9054/WebQNDeviceInfo)

设备信息

Core Methods

isBrowserSupported

  * isBrowserSupported(): boolean
  * 当前浏览器是否支持 QNRTC SDK

Returns boolean

checkSystemRequirements

  * checkSystemRequirements(): Promise<[QNSystemRequirementsTestResult](https://developer.qiniu.com/rtc/9070/WebQNRTC/9084/WebQNSystemRequirementsTestResult)>
  * 系统兼容检测。

Returns
Promise<[QNSystemRequirementsTestResult](https://developer.qiniu.com/rtc/9070/WebQNRTC/9084/WebQNSystemRequirementsTestResult)>

setLogLevel

  * setLogLevel(level: [QNLogLevel](https://developer.qiniu.com/rtc/9070/WebQNRTC/9053/WebQNLogLevel)): void
  * 设置日志打印等级。

Parameters

    * level: [QNLogLevel](https://developer.qiniu.com/rtc/9070/WebQNRTC/9053/WebQNLogLevel)

日志等级

Returns void

isChromeExtensionAvailable

  * isChromeExtensionAvailable(): Promise<boolean>
  * 检查 Chrome 浏览器插件是否已安装。

Returns Promise<boolean>

createClient

  * createClient(): [QNRTCClient](https://developer.qiniu.com/rtc/9070/WebQNRTC/9090/WebQNRTCClient)
  * 创建QNRTCClient对象

Returns
[QNRTCClient](https://developer.qiniu.com/rtc/9070/WebQNRTC/9090/WebQNRTCClient)

getCameras

  * getCameras(skipPermissionCheck = false): Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]>
  * 枚举可用的视频输入设备，比如摄像头

Parameters

    * Optional skipPermissionCheck: boolean 

将该参数设置成 true 跳过权限检查，但是 SDK 将无法保证获取准确的媒体设备信息。

🔹 true: 跳过权限检查

🔹 false:（默认）不跳过权限检查。

Returns Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-
US/docs/Web/API/MediaDeviceInfo)[]>

getMicrophones

  * getMicrophones(skipPermissionCheck = false): Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]>
  * 枚举可用的音频输入设备，比如麦克风

Parameters

    * Optional skipPermissionCheck: boolean 

将该参数设置成 true 跳过权限检查，但是 SDK 将无法保证获取准确的媒体设备信息。

🔹 true: 跳过权限检查

🔹 false:（默认）不跳过权限检查。

Returns Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-
US/docs/Web/API/MediaDeviceInfo)[]>

getPlaybackDevices

  * getPlaybackDevices(skipPermissionCheck = false): Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]>
  * 枚举可用的音频播放设备，比如扬声器

Parameters

    * Optional skipPermissionCheck: boolean 

将该参数设置成 true 跳过权限检查，但是 SDK 将无法保证获取准确的媒体设备信息。

🔹 true: 跳过权限检查

🔹 false:（默认）不跳过权限检查。

Returns Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-
US/docs/Web/API/MediaDeviceInfo)[]>

getDevices

  * getDevices(skipPermissionCheck?: boolean): Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]>
  * 枚举可用的媒体输入和输出设备，比如麦克风、摄像头、耳机等

Parameters

    * Optional skipPermissionCheck: boolean 

将该参数设置成 true 跳过权限检查，但是 SDK 将无法保证获取准确的媒体设备信息。

🔹 true: 跳过权限检查

🔹 false:（默认）不跳过权限检查。

Returns Promise<[MediaDeviceInfo](https://developer.mozilla.org/en-
US/docs/Web/API/MediaDeviceInfo)[]>

createCameraVideoTrack

  * createCameraVideoTrack(config?: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9077/WebQNCameraVideoTrackConfig)): Promise<[QNCameraVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9068/WebQNCameraVideoTrack)>
  * 通过摄像头采集的视频创建一个视频轨道。

> 默认 tag 为 ' '、前置摄像头、传输优化模式
> [DEFAULT](https://developer.qiniu.com/rtc/9070/WebQNRTC/9079)、编码配置
> [480p](https://developer.qiniu.com/rtc/9070/WebQNRTC/9075)。

Parameters

    * Optional config: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9077/WebQNCameraVideoTrackConfig)

摄像头视频采集的配置信息。

Returns
Promise<[QNCameraVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9068/WebQNCameraVideoTrack)>

createMicrophoneAudioTrack

  * createMicrophoneAudioTrack(config?: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9055/WebQNMicrophoneAudioTrackConfig)): Promise<[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9064/WebQNMicrophoneAudioTrack)>
  * 通过麦克风采集的音频创建一个音频轨道。

> 默认 tag 为 ' '、传输优化模式
> [DEFAULT](https://developer.qiniu.com/rtc/9070/WebQNRTC/9079)、开启自动增益、开启回声消除、开启降噪、编码配置
> [STANDARD](https://developer.qiniu.com/rtc/9070/WebQNRTC/9075)。

Parameters

    * Optional config: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9055/WebQNMicrophoneAudioTrackConfig)

麦克风音频采集的配置信息。

Returns
Promise<[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9064/WebQNMicrophoneAudioTrack)>

createScreenVideoTrack

  * createScreenVideoTrack(config?: [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9056/WebQNScreenVideoTrackConfig), withAudio?: string): Promise<[[QNScreenVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9092/WebQNScreenVideoTrack), [QNLocalAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9089/WebQNLocalAudioTrack)] | [QNScreenVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9092/WebQNScreenVideoTrack)>
  * 创建用于屏幕共享的视频轨道。

> 默认 screenVideoTag 为 ' 'screenAudioTag 为 ' '、传输优化模式
> [DEFAULT](https://developer.qiniu.com/rtc/9070/WebQNRTC/9079)、编码配置
> [720p](https://developer.qiniu.com/rtc/9070/WebQNRTC/9075)。

Parameters

    * Optional config: [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9056/WebQNScreenVideoTrackConfig)

采集屏幕共享视频的配置信息。

    * Optional withAudio: string 

屏幕共享时是否同时采集系统声音。

🔹 enable: 采集系统声音，如果采集失败，抛出错误

🔹 disable: （默认）不采集系统声音

🔹 auto: 采集系统声音，如果采集失败，不抛出错误，无音频轨道返回

Returns Promise<[[QNScreenVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9092/WebQNScreenVideoTrack), [QNLocalAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9089/WebQNLocalAudioTrack)] | [QNScreenVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9092/WebQNScreenVideoTrack)>

createMicrophoneAndCameraTracks

  * createMicrophoneAndCameraTracks(audioConfig?: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9055/WebQNMicrophoneAudioTrackConfig), videoConfig?: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9077/WebQNCameraVideoTrackConfig)): Promise<[[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9064/WebQNMicrophoneAudioTrack), [QNCameraVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9068/WebQNCameraVideoTrack)]>
  * 同时采集麦克风音频和摄像头视频轨道。

> 视频配置默认 tag 为 ' '、前置摄像头、传输优化模式
> [DEFAULT](https://developer.qiniu.com/rtc/9070/WebQNRTC/9079)、编码配置
> [480p](https://developer.qiniu.com/rtc/9070/WebQNRTC/9075)。
>
> 音频配置默认 tag 为 ' '、传输优化模式
> [DEFAULT](https://developer.qiniu.com/rtc/9070/WebQNRTC/9079)、开启自动增益、开启回声消除、开启降噪、编码配置
> [STANDARD](https://developer.qiniu.com/rtc/9070/WebQNRTC/9075)。

Parameters

    * Optional audioConfig: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9055/WebQNMicrophoneAudioTrackConfig)

麦克风音频采集的配置信息。

    * Optional videoConfig: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9077/WebQNCameraVideoTrackConfig)

摄像头视频采集的配置信息。

Returns
Promise<[[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9064/WebQNMicrophoneAudioTrack),
[QNCameraVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9068/WebQNCameraVideoTrack)]>

createBufferSourceAudioTrack

  * createBufferSourceAudioTrack(config: [QNBufferSourceAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9057/WebQNBufferSourceAudioTrackConfig)): Promise<[QNBufferSourceAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9069/WebQNBufferSourceAudioTrack)>
  * 通过外部音频数据源创建一个音频轨道。

Parameters

    * config: [QNBufferSourceAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9057/WebQNBufferSourceAudioTrackConfig)

关于外部音频数据源的配置等信息。

Returns
Promise<[QNBufferSourceAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9069/WebQNBufferSourceAudioTrack)>

createCanvasVideoTrack

  * createCanvasVideoTrack(config: [QNCanvasVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/10185/WebQNCanvasVideoTrackConfig)): [QNCanvasVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/10320/WebQNCanvasVideoTrack)
  * 创建画布视频 track

Parameters

    * config: [QNCanvasVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/10185/WebQNCanvasVideoTrackConfig)

配置画布宽高、内容等信息。

Returns
[QNCanvasVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/10320/WebQNCanvasVideoTrack)

createCustomAudioTrack

  * createCustomAudioTrack(config: [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9074/WebQNCustomAudioTrackConfig)): [QNCustomAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9091/WebQNCustomAudioTrack)
  * 创建一个自定义的音频轨道。

Parameters

    * config: [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9074/WebQNCustomAudioTrackConfig)

通过该配置指定码率、音源等信息。

Returns
[QNCustomAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9091/WebQNCustomAudioTrack)

createCustomVideoTrack

  * createCustomVideoTrack(config: [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9062/WebQNCustomVideoTrackConfig)): [QNCustomVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9088/WebQNCustomVideoTrack)
  * 创建一个自定义的视频轨道。

Parameters

    * config: [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/9070/WebQNRTC/9062/WebQNCustomVideoTrackConfig)

通过该配置指定码率、视频源等信息。

Returns
[QNCustomVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9088/WebQNCustomVideoTrack)

checkAudioTrackIsActive

  * checkAudioTrackIsActive(track: [QNLocalAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9089/WebQNLocalAudioTrack) | [QNRemoteAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9087/WebQNRemoteAudioTrack), timeout?: number): Promise<boolean>
  * 检测音频轨道是否活跃

> 在一定时间内检测音频轨道声音是否有变化或者是否低于正常值。
>
> 可以在开始通话前对音频输入设备进行可用性检测。
>
> 当音频轨被 muted 的时候返回 false

> 如果传入的音频轨道在处于极度安静的情况下，该接口可能会误报。

Parameters

    * track: [QNLocalAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9089/WebQNLocalAudioTrack) | [QNRemoteAudioTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9087/WebQNRemoteAudioTrack)

需要检测的本地或远端音频 Track

    * Optional timeout: number 

sdk 最低检测事件为200 ms，若传入值小于200，则 sdk 会自动调整为 200ms。

Returns Promise<boolean>

checkVideoTrackIsActive

  * checkVideoTrackIsActive(track: [QNLocalVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9061/WebQNLocalVideoTrack) | [QNRemoteVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9060/WebQNRemoteVideoTrack), timeout?: number): Promise<boolean>
  * 检测视频轨道是否活跃

> 在一定时间内检测视频轨道画面是否有变化。
>
> 可以在开始通话前对视频输入设备进行可用性检测。
>
> 当视频轨被 muted 的时候返回 false。

Parameters

    * track: [QNLocalVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9061/WebQNLocalVideoTrack) | [QNRemoteVideoTrack](https://developer.qiniu.com/rtc/9070/WebQNRTC/9060/WebQNRemoteVideoTrack)

需要检测的本地或远端视频 Track

    * Optional timeout: number 

sdk 最低检测事件为60 ms，若传入值小于60，则 sdk 会自动调整为 60ms。

Returns Promise<boolean>

setTransportPolicy

  * setTransportPolicy(policy: [QNTransportPolicy](https://developer.qiniu.com/rtc/9070/WebQNRTC/9078/WebQNTransportPolicy)): void
  * 设置传输模式

Parameters

    * policy: [QNTransportPolicy](https://developer.qiniu.com/rtc/9070/WebQNRTC/9078/WebQNTransportPolicy)

传输策略，默认值为 preferUdp。

Returns void

getElectronScreenSources

  * getElectronScreenSources(type?: [QNElectronScreenSourceType](https://developer.qiniu.com/rtc/9070/WebQNRTC/10789/WebQNElectronScreenSourceType)): Promise<[QNElectronScreenSource](https://developer.qiniu.com/rtc/9070/WebQNRTC/10790/WebQNElectronScreenSource)[]>
  * Electron 环境下枚举屏幕共享源

Parameters

    * type: [QNElectronScreenSourceType](https://developer.qiniu.com/rtc/9070/WebQNRTC/10789/WebQNElectronScreenSourceType)

屏幕共享类型选择

Returns
Promise<[QNElectronScreenSource](https://developer.qiniu.com/rtc/9070/WebQNRTC/10790/WebQNElectronScreenSource)[]>

createDeviceManger

  * createDeviceManger(): [QNDeviceManager](https://developer.qiniu.com/rtc/9070/WebQNRTC/12500/WebQNDeviceManager)
  * 创建设备管理类

Returns
[QNDeviceManager](https://developer.qiniu.com/rtc/9070/WebQNRTC/12500/WebQNDeviceManager)

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