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

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

#  QNRTC

最近更新时间: 2022-03-24 00:23:01

QNRTC 作为 SDK 的入口，提供创建本地音视频轨道，创建
[QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)
对象等一系列静态方法

Index

Core Methods

  * GetVersion
  * SetLogFile
  * Init
  * DeInint
  * GetCameraCount
  * GetCameraInfo
  * GetScreenWindowCount
  * GetScreenWindowInfo
  * GetAudioRecordingDeviceCount
  * GetAudioRecordingDeviceInfo
  * GetAudioPlaybackDeviceCount
  * GetAudioPlaybackDeviceInfo
  * SetAudioRecordingDevice
  * SetAudioPlaybackDevice
  * CreateClient[1/2]
  * CreateClient[2/2]
  * DestroyRtcClient
  * SetClientEventListener
  * CreateMicrophoneAudioTrack
  * CreateCustomAudioTrack
  * CreateCameraVideoTrack
  * CreateScreenVideoTrack
  * CreateCustomVideoTrack
  * DestroyLocalTrack
  * SetAudioRouteToSpeakerphone
  * SetAudioPlayMute
  * IsAudioPlayMute

Core Methods

GetVersion

  * static void GetVersion(std::string& ver)
  * 获取 sdk 版本号

Parameters

    * ver: string 

版本号

SetLogFile

  * static void SetLogFile([QNLogLevel](https://developer.qiniu.com/rtc/9445/qnrtc/9432/QNLogLevel) level, const std::string& dir_name, const std::string& file_name)
  * 设置是否开启本地日志保存功能，并设置保存文件的路径和前缀名，不调用此接口，默认不开启日志记录

Parameters

    * level: [QNLogLevel](https://developer.qiniu.com/rtc/9445/qnrtc/9432/QNLogLevel)

日志开启级别

    * dir_name: string 

日志文件目录名，不存在则自动创建

    * file_name: string 

日志文件前缀名

Init

  * static void Init(QNRTCSetting& setting, QNRTCEventListener* listener)
  * 初始化

Parameters

    * setting: [QNRTCSetting](https://developer.qiniu.com/rtc/9445/qnrtc/11343/QNRTCSetting)

日志开启级别

    * listener: [QNRTCEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/11345/QNRTCEventListener)

日志文件目录名，不存在则自动创建

DeInint

  * static void DeInint()
  * 反初始化

GetCameraCount

  * static int32_t GetCameraCount()
  * 获取摄像头数量， 此方法仅适用于 Windows 和 Linux 平台

Returns 设备数量

GetCameraInfo

  * static const [QNCameraInfo](https://developer.qiniu.com/rtc/9445/qnrtc/9402/9402)& GetCameraInfo(int32_t index)
  * 获取指定序号的摄像头设备信息，首先通过 GetCameraCount 获取摄像头数量，此方法仅适用于 Windows 和 Linux 平台

Parameters

    * index: int32_t 

设备序号，<= GetCameraCount()

Returns 指定index 的摄像头设备信息

GetScreenWindowCount

  * static int32_t GetScreenWindowCount()
  * 获取可进行画面采集的屏幕、窗口数量；如需刷新则再次调用即可，此方法仅适用于 Windows 平台

Returns 可以进行采集的屏幕、窗口数量

GetScreenWindowInfo

  * sstatic const [QNScreenWindowInfo](https://developer.qiniu.com/rtc/9445/qnrtc/9450/QNScreenWindowInfo)& GetScreenWindowInfo(int32_t index)
  * 获取指定 index 的屏幕窗口信息，根据此信息可以进行对应的画面采集，此方法仅适用于 Windows

Parameters

    * index: int32_t 

窗口序号，<= GetScreenWindowCount()

Returns 指定 index 的窗口信息

GetAudioRecordingDeviceCount

  * static int32_t GetAudioRecordingDeviceCount()
  * 获取音频采集设备数量，此方法仅适用于 Windows 和 Linux 平台

Returns 音频采集设备的数量

GetAudioRecordingDeviceInfo

  * static [QNAudioDeviceInfo](https://developer.qiniu.com/rtc/9445/qnrtc/9396QNAudioDeviceInfo)& GetAudioRecordingDeviceInfo(int32_t index)
  * 获取指定 index 音频采集设备信息，此方法仅适用于 Windows 和 Linux 平台

Parameters

    * index: int32_t 

采集设备序号，<= GetAudioRecordingDeviceCount()

Returns 指定 index 的音频采集设备信息

GetAudioPlaybackDeviceCount

  * static int32_t GetAudioPlaybackDeviceCount()
  * 获取音频播放设备数量，此方法仅适用于 Windows 和 Linux 平台

Returns 音频播放设备的数量

GetAudioPlaybackDeviceInfo

  * static [QNAudioDeviceInfo](https://developer.qiniu.com/rtc/9445/qnrtc/9396QNAudioDeviceInfo)& GetAudioPlaybackDeviceInfo(int32_t index)
  * 获取指定 index 音频播放设备信息，此方法仅适用于 Windows 和 Linux 平台

Parameters

    * index: int32_t 

采集设备序号，<= GetAudioRecordingDeviceCount()

Returns 指定 index 的音频播放设备信息

SetAudioRecordingDevice

  * static int32_t SetAudioRecordingDevice(int32_t index)
  * 设置连麦使用的音频采集设备，不调用则使用系统默认采集设备，连麦过程中设置无效，需在发布音频 Track 前调用，此方法仅适用于 Windows 和 Linux 平台

Parameters

    * index: int32_t 

采集设备序号，<= GetAudioRecordingDeviceCount()

Returns 成功返回 0，其它请参考错误码列表

SetAudioPlaybackDevice

  * static int32_t SetAudioPlaybackDevice(int32_t index)
  * 设置连麦使用的音频播放设备，不调用则使用系统默认采集设备，连麦过程中设置无效，需在发布音频 Track 前调用，此方法仅适用于 Windows 和 Linux 平台

Parameters

    * index: int32_t 

采集设备序号，<= GetAudioPlaybackDeviceCount()

Returns 成功返回 0，其它请参考错误码列表

CreateClient[1/2]

  * static [QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)* CreateClient([QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)* listener)
  * 创建一个连接对象，QNRTCClient 全局只可存在一个

Parameters

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)

连接中的事件监听

Returns 连接管理对象指针

CreateClient[2/2]

  * static [QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)* CreateClient([QNRTCClientConfig](https://developer.qiniu.com/rtc/9445/qnrtc/11344/QNRTCClientConfig)& config, [QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)* listener)
  * 使用 [QNRTCClientConfig](https://developer.qiniu.com/rtc/9445/qnrtc/11344/QNRTCClientConfig) 设创建一个连接对象并为其设置事件监听，QNRTCClient 全局只可存在一个

Parameters

    * config: [QNRTCClientConfig](https://developer.qiniu.com/rtc/9445/qnrtc/11344/QNRTCClientConfig)

连接管理对象初始化配置

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)

连接中的事件监听

Returns 连接管理对象指针

DestroyRtcClient

  * static void DestroyRtcClient([QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)* ptr)
  * 释放由 CreateClient 创建的连接管理对象

Parameters

    * ptr: [QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)

[QNRTCClient](https://developer.qiniu.com/rtc/9445/qnrtc/9446/QNRTCClient)
对象指针

SetClientEventListener

  * static void SetClientEventListener([QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)* listener)
  * 设置连接中的事件监听

Parameters

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)

[QNClientEventListener](https://developer.qiniu.com/rtc/9445/qnrtc/9407/QNClientEventListener)
对象指针

CreateMicrophoneAudioTrack

  * static [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9433/QNMicrophoneAudioTrack)* CreateMicrophoneAudioTrack([QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9434/QNMicrophoneAudioTrackConfig)& config)
  * 通过指定一个 [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9434/QNMicrophoneAudioTrackConfig) 来创建一个麦克风音频轨道对象

> 本地音频 Track 只可存在一个，重复创建会返回 null

Parameters

    * config: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9434/QNMicrophoneAudioTrackConfig)

采集音频的配置

Returns
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9433/QNMicrophoneAudioTrack)
对象指针

CreateCustomAudioTrack

  * static [QNCustomAudioTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9409/QNCustomAudioTrack)* CreateCustomAudioTrack([QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9410/QNCustomAudioTrackConfig)& config)
  * 通过指定一个 [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9410/QNCustomAudioTrackConfig) 来创建一个自定义音频轨道对象

> 本地音频 Track 只可存在一个，重复创建会返回 null

Parameters

    * config: [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9410/QNCustomAudioTrackConfig)

自定义采集音频的配置

Returns
[QNCustomAudioTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9409/QNCustomAudioTrack)
对象指针

CreateCameraVideoTrack

  * static [QNCameraVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9404/QNCameraVideoTrack)* CreateCameraVideoTrack([QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9406/QNCameraVideoTrackConfig)& config)
  * 通过指定一个 [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9406/QNCameraVideoTrackConfig) 来创建一个摄像头视频轨道对象

Parameters

    * config: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9406/QNCameraVideoTrackConfig)

摄像头 Track 的配置，可设置视频的采集配置与开关大小流功能等

Returns
[QNCameraVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9404/QNCameraVideoTrack)
对象指针

CreateScreenVideoTrack

  * static [QNScreenVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9448/QNScreenVideoTrack)* CreateScreenVideoTrack([QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9449/QNScreenVideoTrackConfig)& config)
  * 通过指定一个 [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9449/QNScreenVideoTrackConfig) 来创建一个屏幕共享轨道对象

> Linux 平台暂不支持屏幕共享

Parameters

    * config: [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9449/QNScreenVideoTrackConfig)

屏幕共享 Track 的配置，可设置视频的编码配置

Returns
[QNScreenVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9448/QNScreenVideoTrack)
对象指针

CreateCustomVideoTrack

  * static [QNCustomVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9412/QNCustomVideoTrack)* CreateCustomVideoTrack([QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9413/QNCustomVideoTrackConfig)& config)
  * 通过指定一个 [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9413/QNCustomVideoTrackConfig) 来创建一个自定义视频采集轨道对象

> 自定义视频采集轨道可以创建多个，而其他采集轨道只能创建一个

Parameters

    * config: [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/9445/qnrtc/9413/QNCustomVideoTrackConfig)

自定义视频采集 Track 的配置，可设置视频的编码配置

Returns
[QNCustomVideoTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9412/QNCustomVideoTrack)
对象指针

DestroyLocalTrack

  * static void DestroyLocalTrack([QNLocalTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9422/QNLocalTrack)* ptr)
  * 释放前面创建的音视频轨道实例

Parameters

    * ptr: [QNLocalTrack](https://developer.qiniu.com/rtc/9445/qnrtc/9422/QNLocalTrack)

音视频轨道实例

SetAudioRouteToSpeakerphone

  * static void SetAudioRouteToSpeakerphone(bool audio_route_to_speakerphone)
  * 设置是否将音频路由切换到扬声器，设置为 false 后将会切换到之前的音频路由。

设置生效后会触发
[QNRTCEventListener.OnAudioRouteChanged](https://developer.qiniu.com/rtc/9445/qnrtc/11345)
回调对应的路由状态，该方法仅仅适用于 Android 和 iOS 平台

Parameters

    * audio_route_to_speakerphone: bool 

是否将音频路由切换到扬声器

SetAudioPlayMute

  * static void SetAudioPlayMute(bool muted)
  * 设置音频播放静音，该方法仅仅适用于 Android 和 iOS 平台

Parameters

    * muted: bool 

是否将音频播放设置为静音

IsAudioPlayMute

  * static bool IsAudioPlayMute()
  * 当前音频播放是否为静音，该方法仅仅适用于 Android 和 iOS 平台

Returns 音频静音状态，true 为静音，false 不为静音

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