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

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

#  QNRTC

最近更新时间: 2022-03-28 17:42:36

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

Index

Core Methods

  * GetVersion
  * SetLogFile
  * Init
  * DeInint
  * GetCameraCount
  * GetCameraInfo
  * GetAudioRecordingDeviceCount
  * GetAudioRecordingDeviceInfo
  * GetAudioPlaybackDeviceCount
  * GetAudioPlaybackDeviceInfo
  * SetAudioRecordingDevice
  * SetAudioPlaybackDevice
  * CreateClient[1/2]
  * CreateClient[2/2]
  * DestroyRtcClient
  * SetClientEventListener
  * CreateMicrophoneAudioTrack
  * CreateCustomAudioTrack
  * CreateCameraVideoTrack
  * 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/11216/QNRTC-Linux/11275/QNLogLevel-Linux) level, const std::string& dir_name, const std::string& file_name)
  * 设置是否开启本地日志保存功能，并设置保存文件的路径和前缀名，不调用此接口，默认不开启日志记录

Parameters

    * level: [QNLogLevel](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11275/QNLogLevel-Linux)

日志开启级别

    * dir_name: string 

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

    * file_name: string 

日志文件前缀名

Init

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

Parameters

    * setting: [QNRTCSetting](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11218/QNRTCSetting-Linux)

日志开启级别

    * listener: [QNRTCEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11217/QNRTCEventListener-Linux)

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

DeInint

  * static void DeInint()
  * 反初始化

GetCameraCount

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

Returns 设备数量

GetCameraInfo

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

Parameters

    * index: int32_t 

设备序号，<= GetCameraCount()

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

GetAudioRecordingDeviceCount

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

Returns 音频采集设备的数量

GetAudioRecordingDeviceInfo

  * static [QNAudioDeviceInfo](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/undefined)& 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/11216/QNRTC-Linux/undefined)& 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/11216/QNRTC-Linux/11288/QNRTCClient-Linux)* CreateClient([QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11261/QNClientEventListener-Linux)* listener)
  * 创建一个连接对象，QNRTCClient 全局只可存在一个

Parameters

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11261/QNClientEventListener-Linux)

连接中的事件监听

Returns 连接管理对象指针

CreateClient[2/2]

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

Parameters

    * config: [QNRTCClientConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/undefined)

连接管理对象初始化配置

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11261/QNClientEventListener-Linux)

连接中的事件监听

Returns 连接管理对象指针

DestroyRtcClient

  * static void DestroyRtcClient([QNRTCClient](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11288/QNRTCClient-Linux)* ptr)
  * 释放由 CreateClient 创建的连接管理对象

Parameters

    * ptr: [QNRTCClient](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11288/QNRTCClient-Linux)

[QNRTCClient](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11288/QNRTCClient-Linux) 对象指针

SetClientEventListener

  * static void SetClientEventListener([QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11261/QNClientEventListener-Linux)* listener)
  * 设置连接中的事件监听

Parameters

    * listener: [QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11261/QNClientEventListener-Linux)

[QNClientEventListener](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11261/QNClientEventListener-Linux) 对象指针

CreateMicrophoneAudioTrack

  * static [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11210/QNMicrophoneAudioTrack-Linux)* CreateMicrophoneAudioTrack([QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11211/QNMicrophoneAudioTrackConfig-Linux)& config)
  * 通过指定一个 [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11211/QNMicrophoneAudioTrackConfig-Linux) 来创建一个麦克风音频轨道对象

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

Parameters

    * config: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11211/QNMicrophoneAudioTrackConfig-Linux)

采集音频的配置

Returns [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11210/QNMicrophoneAudioTrack-Linux) 对象指针

CreateCustomAudioTrack

  * static [QNCustomAudioTrack](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11203/QNCustomAudioTrack-Linux)* CreateCustomAudioTrack([QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11204/QNCustomAudioTrackConfig-Linux)& config)
  * 通过指定一个 [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11204/QNCustomAudioTrackConfig-Linux) 来创建一个自定义音频轨道对象

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

Parameters

    * config: [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11204/QNCustomAudioTrackConfig-Linux)

自定义采集音频的配置

Returns [QNCustomAudioTrack](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11203/QNCustomAudioTrack-Linux) 对象指针

CreateCameraVideoTrack

  * static [QNCameraVideoTrack](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11198/QNCameraVideoTrack-Linux)* CreateCameraVideoTrack([QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11201/QNCameraVideoTrackConfig-Linux)& config)
  * 通过指定一个 [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11201/QNCameraVideoTrackConfig-Linux) 来创建一个摄像头视频轨道对象

Parameters

    * config: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11201/QNCameraVideoTrackConfig-Linux)

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

Returns [QNCameraVideoTrack](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11198/QNCameraVideoTrack-Linux) 对象指针

CreateCustomVideoTrack

  * static [QNCustomVideoTrack](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11205/QNCustomVideoTrack-Linux)* CreateCustomVideoTrack([QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11206/QNCustomVideoTrackConfig-Linux)& config)
  * 通过指定一个 [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11206/QNCustomVideoTrackConfig-Linux) 来创建一个自定义视频采集轨道对象

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

Parameters

    * config: [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11206/QNCustomVideoTrackConfig-Linux)

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

Returns [QNCustomVideoTrack](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11205/QNCustomVideoTrack-Linux) 对象指针

DestroyLocalTrack

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

Parameters

    * ptr: [QNLocalTrack](https://developer.qiniu.com/rtc/11216/QNRTC-Linux/11208/QNLocalTrack-Linux)

音视频轨道实例

SetAudioRouteToSpeakerphone

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

设置生效后会触发
[QNRTCEventListener.OnAudioRouteChanged](https://developer.qiniu.com/rtc/11216/QNRTC-
Linux/11217) 回调对应的路由状态，该方法仅仅适用于 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 不为静音

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