NERtc macOS SDK  V5.5.40
Public 成员函数 | 所有成员列表
nertc::IVideoDeviceManager类 参考abstract

#include <nertc_video_device_manager.h>

Public 成员函数

virtual IDeviceCollectionenumerateCaptureDevices ()=0
 
virtual int setDevice (const char device_id[kNERtcMaxDeviceIDLength], NERtcVideoStreamType type=kNERTCVideoStreamMain)=0
 
virtual int getDevice (char device_id[kNERtcMaxDeviceIDLength], NERtcVideoStreamType type=kNERTCVideoStreamMain)=0
 

详细描述

视频设备管理方法。
IVideoDeviceManager 接口类提供用于管理视频设备的相关接口。 可通过实例化 IVideoDeviceManager 类来获取 IVideoDeviceManager 接口。

成员函数说明

◆ enumerateCaptureDevices()

virtual IDeviceCollection* nertc::IVideoDeviceManager::enumerateCaptureDevices ( )
pure virtual

获取系统中所有的视频采集设备列表。
该方法返回一个 IDeviceCollection 对象,包含系统中所有的音频采集设备。通过IDeviceCollection 对象,App 可以枚举视频采集设备。

注解
在使用结束后,App 需调用 destroy 方法销毁返回的对象。
返回
  • 方法调用成功:一个 IDeviceCollection 对象,包含所有的视频采集设备。
  • 方法调用失败:NULL 。

◆ getDevice()

virtual int nertc::IVideoDeviceManager::getDevice ( char  device_id[kNERtcMaxDeviceIDLength],
NERtcVideoStreamType  type = kNERTCVideoStreamMain 
)
pure virtual

获取当前使用的视频采集设备信息。
通过本接口可以实现获取主流或辅流视频通道已选择的视频采集设备信息。

自从
V4.6.20
使用前提
请在通过 setDevice 接口设置视频采集设备后调用该方法,否则返回空。
调用时机
请在初始化后调用该方法。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称 类型 描述
device_id const char [kNERtcMaxDeviceIDLength] 视频采集设备的设备 ID。可以通过 enumerateCaptureDevices 接口获取。
type see NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain(默认):主流。
  • kNERTCVideoStreamSub:辅流。
示例代码
//获取主流视频通道的设备信息
std::string device_id = "\\?\usb#vid_046d&pid_081b&mi_00#7&1f6973a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"; // 可以通过 IVideoDeviceManager 接口获取device_id
setDevice(device_id.c_str(), type);
//获取辅流通道的设备信息
std::string device_id = "\\?\usb#vid_046d&pid_081b&mi_00#7&1f6973a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"; // 可以通过 IVideoDeviceManager 接口获取device_id
setDevice(device_id.c_str(), type);
virtual int setDevice(const char device_id[kNERtcMaxDeviceIDLength], NERtcVideoStreamType type=kNERTCVideoStreamMain)=0
NERtcVideoStreamType
Definition: nertc_engine_defines.h:5780
@ kNERTCVideoStreamSub
Definition: nertc_engine_defines.h:5798
@ kNERTCVideoStreamMain
Definition: nertc_engine_defines.h:5789
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如使用的是纯音频 SDK。

◆ setDevice()

virtual int nertc::IVideoDeviceManager::setDevice ( const char  device_id[kNERtcMaxDeviceIDLength],
NERtcVideoStreamType  type = kNERTCVideoStreamMain 
)
pure virtual

指定视频采集设备。
通过本接口可以实现为主流或辅流视频通道选择视频采集设备。

自从
V4.6.20
使用前提
请在通过 startVideoPreview 接口开启视频预览后调用该方法。
调用时机
请在初始化后调用该方法。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称 类型 描述
device_id const char [kNERtcMaxDeviceIDLength] 视频采集设备的设备 ID。可以通过 enumerateCaptureDevices 接口获取。
type see NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain(默认):主流。
  • kNERTCVideoStreamSub:辅流。
示例代码
//先获取主流通道的视频管理对象
nertc::IVideoDeviceManager * manager = nullptr;
rtcEngine->queryInterface(nertc::kNERtcIIDVideoDeviceManager, &(void*)manager);
std::string deviceID = ...;//通过 enumerateCaptureDevices 获取
//设置主流通道的视频设备ID
videoManager->setDevice(deviceID, type);
//先获取辅流通道的视频管理对象
nertc::IVideoDeviceManager * manager = nullptr;
rtcEngine->queryInterface(nertc::kNERtcIIDVideoDeviceManager, &(void*)manager);
std::string deviceID = ...;//通过 enumerateCaptureDevices 获取
//设置辅流通道的视频设备ID
videoManager->setDevice(deviceID, type);
Definition: nertc_video_device_manager.h:31
@ kNERtcIIDVideoDeviceManager
Definition: nertc_engine_defines.h:233
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 deviceID 设置错误。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如使用的是纯音频 SDK。
    • 30008(kNERtcErrDeviceNotFound):未找到设备。
    • 30009(kNERtcErrInvalidDeviceSourceID):非法的设备,比如设置的 deviceID 字符串含有非法字符。

该类的文档由以下文件生成: