腾讯云直播SDKTXDeviceManager_音视频解决方案_同尘科技

直播SDK 1年前 (2023-10-19) 浏览 26

Copyright (c) 2021 Tencent. All rights reserved.
Module: 音视频设备管理模块
Function: 用于管理摄像头、麦克风和扬声器等音视频相关的硬件设备
TXDeviceManager

TXDeviceObserver

函数列表 描述
onDeviceChanged:type:state: 本地设备的通断状态发生变化(仅适用于桌面系统)

TXDeviceManager

函数列表 描述
isFrontCamera 判断当前是否为前置摄像头(仅适用于移动端)
switchCamera: 切换前置或后置摄像头(仅适用于移动端)
isCameraZoomSupported 查询当前摄像头是否支持缩放(仅适用于移动端)
getCameraZoomMaxRatio 获取摄像头的最大缩放倍数(仅适用于移动端)
setCameraZoomRatio: 设置摄像头的缩放倍数(仅适用于移动端)
isAutoFocusEnabled 查询是否支持自动识别人脸位置(仅适用于移动端)
enableCameraAutoFocus: 开启自动对焦功能(仅适用于移动端)
setCameraFocusPosition: 设置摄像头的对焦位置(仅适用于移动端)
isCameraTorchSupported 查询是否支持开启闪光灯(仅适用于移动端)
enableCameraTorch: 开启/关闭闪光灯,也就是手电筒模式(仅适用于移动端)
setAudioRoute: 设置音频路由(仅适用于移动端)
setExposureCompensation: 设置摄像头的曝光参数,取值范围从-1到1
getDevicesList: 获取设备列表(仅适用于桌面端)
setCurrentDevice:deviceId: 设置当前要使用的设备(仅适用于桌面端)
getCurrentDevice: 获取当前正在使用的设备(仅适用于桌面端)
setCurrentDeviceVolume:deviceType: 设置当前设备的音量(仅适用于桌面端)
getCurrentDeviceVolume: 获取当前设备的音量(仅适用于桌面端)
setCurrentDeviceMute:deviceType: 设置当前设备的静音状态(仅适用于桌面端)
getCurrentDeviceMute: 获取当前设备的静音状态(仅适用于桌面端)
enableFollowingDefaultAudioDevice:enable: 设置 SDK 使用的音频设备根据跟随系统默认设备(仅适用于桌面端)
startCameraDeviceTest: 开始摄像头测试(仅适用于桌面端)
stopCameraDeviceTest 结束摄像头测试(仅适用于桌面端)
startMicDeviceTest: 开始麦克风测试(仅适用于桌面端)
startMicDeviceTest:playback: 开始麦克风测试(仅适用于桌面端)
stopMicDeviceTest 结束麦克风测试(仅适用于桌面端)
startSpeakerDeviceTest: 开始扬声器测试(仅适用于桌面端)
stopSpeakerDeviceTest 结束扬声器测试(仅适用于桌面端)
setObserver: 设备热插拔回调(仅适用于 Mac 系统)
setSystemVolumeType: 设置系统音量类型(仅适用于移动端)

结构体类型

函数列表 描述
TXMediaDeviceInfo 音视频设备的相关信息(仅适用于桌面平台)

枚举类型

枚举类型 描述
TXSystemVolumeType 系统音量类型(仅适用于移动设备)
TXAudioRoute 音频路由(即声音的播放模式)
TXMediaDeviceType 设备类型(仅适用于桌面平台)
TXMediaDeviceState 设备操作

onDeviceChanged:type:state:

onDeviceChanged:type:state:

– (void)onDeviceChanged: (NSString*)deviceId
type: (TXMediaDeviceType)mediaType
state: (TXMediaDeviceState)mediaState

本地设备的通断状态发生变化(仅适用于桌面系统)

当本地设备(包括摄像头、麦克风以及扬声器)被插入或者拔出时,SDK 便会抛出此事件回调。

参数 描述
deviceId 设备 ID
state 通断状态,0:设备已添加;1:设备已被移除;2:设备已启用。
type 设备类型

isFrontCamera

isFrontCamera

判断当前是否为前置摄像头(仅适用于移动端)

switchCamera:

switchCamera:

– (NSInteger)switchCamera: (BOOL)frontCamera

切换前置或后置摄像头(仅适用于移动端)

isCameraZoomSupported

isCameraZoomSupported

查询当前摄像头是否支持缩放(仅适用于移动端)

getCameraZoomMaxRatio

getCameraZoomMaxRatio

获取摄像头的最大缩放倍数(仅适用于移动端)

setCameraZoomRatio:

setCameraZoomRatio:

– (NSInteger)setCameraZoomRatio: (CGFloat)zoomRatio

设置摄像头的缩放倍数(仅适用于移动端)

参数 描述
zoomRatio 取值范围1 – 5,取值为1表示最远视角(正常镜头),取值为5表示最近视角(放大镜头)。最大值推荐为5,若超过5,视频数据会变得模糊不清。

isAutoFocusEnabled

isAutoFocusEnabled

查询是否支持自动识别人脸位置(仅适用于移动端)

enableCameraAutoFocus:

enableCameraAutoFocus:

– (NSInteger)enableCameraAutoFocus: (BOOL)enabled

开启自动对焦功能(仅适用于移动端)

开启后,SDK 会自动检测画面中的人脸位置,并将摄像头的焦点始终对焦在人脸位置上。

setCameraFocusPosition:

setCameraFocusPosition:

– (NSInteger)setCameraFocusPosition: (CGPoint)position

设置摄像头的对焦位置(仅适用于移动端)

您可以通过该接口实现如下交互:1. 在本地摄像头的预览画面上,允许用户单击操作。2. 在用户的单击位置显示一个矩形方框,以示摄像头会在此处对焦。3. 随后将用户点击位置的坐标通过本接口传递给 SDK,之后 SDK 会操控摄像头按照用户期望的位置进行对焦。

参数 描述
position 对焦位置,请传入期望对焦点的坐标值

注意使用该接口的前提是先通过 enableCameraAutoFocus 关闭自动对焦功能。

返回值说明:

0:操作成功;负数:操作失败。

isCameraTorchSupported

isCameraTorchSupported

查询是否支持开启闪光灯(仅适用于移动端)

enableCameraTorch:

enableCameraTorch:

– (NSInteger)enableCameraTorch: (BOOL)enabled

开启/关闭闪光灯,也就是手电筒模式(仅适用于移动端)

setAudioRoute:

setAudioRoute:

– (NSInteger)setAudioRoute: (TXAudioRoute)route

设置音频路由(仅适用于移动端)

手机有两个音频播放设备:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。

setExposureCompensation:

setExposureCompensation:

– (NSInteger)setExposureCompensation: (CGFloat)value

设置摄像头的曝光参数,取值范围从-1到1

getDevicesList:

getDevicesList:

– (NSArray * _Nullable)getDevicesList: (TXMediaDeviceType)type

获取设备列表(仅适用于桌面端)

参数 描述
type 设备类型,指定需要获取哪种设备的列表。详见 TXMediaDeviceType 定义。

注意 使用完毕后请调用 release 方法释放资源,这样可以让 SDK 维护 ITXDeviceCollection 对象的生命周期。 不要使用 delete 释放返回的 Collection 对象,delete ITXDeviceCollection* 指针会导致异常崩溃。 type 只支持 TXMediaDeviceTypeMic、TXMediaDeviceTypeSpeaker、TXMediaDeviceTypeCamera。 此接口只支持 Mac 和 Windows 平台。

setCurrentDevice:deviceId:

setCurrentDevice:deviceId:

– (NSInteger)setCurrentDevice: (TXMediaDeviceType)type
deviceId: (NSString *)deviceId

设置当前要使用的设备(仅适用于桌面端)

参数 描述
deviceId 设备ID,您可以通过接口 getDevicesList 获得设备 ID。
type 设备类型,详见 TXMediaDeviceType 定义。

返回值说明:

0:操作成功;负数:操作失败。

getCurrentDevice:

getCurrentDevice:

– (TXMediaDeviceInfo * _Nullable)getCurrentDevice: (TXMediaDeviceType)type

获取当前正在使用的设备(仅适用于桌面端)

setCurrentDeviceVolume:deviceType:

setCurrentDeviceVolume:deviceType:

– (NSInteger)setCurrentDeviceVolume: (NSInteger)volume
deviceType: (TXMediaDeviceType)type

设置当前设备的音量(仅适用于桌面端)

这里的音量指的是麦克风的采集音量或者扬声器的播放音量,摄像头是不支持设置音量的。

参数 描述
volume 音量大小,取值范围为0 – 100,默认值:100。

getCurrentDeviceVolume:

getCurrentDeviceVolume:

– (NSInteger)getCurrentDeviceVolume: (TXMediaDeviceType)type

获取当前设备的音量(仅适用于桌面端)

这里的音量指的是麦克风的采集音量或者扬声器的播放音量,摄像头是不支持获取音量的。

setCurrentDeviceMute:deviceType:

setCurrentDeviceMute:deviceType:

– (NSInteger)setCurrentDeviceMute: (BOOL)mute
deviceType: (TXMediaDeviceType)type

设置当前设备的静音状态(仅适用于桌面端)

这里的音量指的是麦克风和扬声器,摄像头是不支持静音操作的。

getCurrentDeviceMute:

getCurrentDeviceMute:

– (BOOL)getCurrentDeviceMute: (TXMediaDeviceType)type

获取当前设备的静音状态(仅适用于桌面端)

这里的音量指的是麦克风和扬声器,摄像头是不支持静音操作的。

enableFollowingDefaultAudioDevice:enable:

enableFollowingDefaultAudioDevice:enable:

– (NSInteger)enableFollowingDefaultAudioDevice: (TXMediaDeviceType)type
enable: (BOOL)enable

设置 SDK 使用的音频设备根据跟随系统默认设备(仅适用于桌面端)

仅支持设置麦克风和扬声器类型,摄像头暂不支持跟随系统默认设备

参数 描述
enable 是否跟随系统默认的音频设备。 true:跟随。当系统默认音频设备发生改变或者有新音频设备插入时,SDK 立即切换音频设备。 false:不跟随。当系统默认音频设备发生改变或者有新音频设备插入时,SDK 不会切换音频设备。
type 设备类型,详见 TXMediaDeviceType 定义。

startCameraDeviceTest:

startCameraDeviceTest:

– (NSInteger)startCameraDeviceTest: (NSView *)view

开始摄像头测试(仅适用于桌面端)

注意在测试过程中可以使用 setCurrentDevice 接口切换摄像头。

stopCameraDeviceTest

stopCameraDeviceTest

结束摄像头测试(仅适用于桌面端)

startMicDeviceTest:

startMicDeviceTest:

– (NSInteger)startMicDeviceTest: (NSInteger)interval

开始麦克风测试(仅适用于桌面端)

该接口可以测试麦克风是否能正常工作,测试到的麦克风采集音量的大小,会以回调的形式通知给您,其中 volume 的取值范围为0 – 100。

参数 描述
interval 麦克风音量的回调间隔。

注意该接口调用后默认会回播麦克风录制到的声音到扬声器中。

startMicDeviceTest:playback:

startMicDeviceTest:playback:

– (NSInteger)startMicDeviceTest: (NSInteger)interval
playback: (BOOL)playback

开始麦克风测试(仅适用于桌面端)

该接口可以测试麦克风是否能正常工作,测试到的麦克风采集音量的大小,会以回调的形式通知给您,其中 volume 的取值范围为0 – 100。

参数 描述
interval 麦克风音量的回调间隔。
playback 是否开启回播麦克风声音,开启后用户测试麦克风时会听到自己的声音。

stopMicDeviceTest

stopMicDeviceTest

结束麦克风测试(仅适用于桌面端)

startSpeakerDeviceTest:

startSpeakerDeviceTest:

– (NSInteger)startSpeakerDeviceTest: (NSString *)audioFilePath

开始扬声器测试(仅适用于桌面端)

该接口通过播放指定的音频文件,用于测试播放设备是否能正常工作。如果用户在测试时能听到声音,说明播放设备能正常工作。

参数 描述
filePath 声音文件的路径

stopSpeakerDeviceTest

stopSpeakerDeviceTest

结束扬声器测试(仅适用于桌面端)

setObserver:

setObserver:

– (void)setObserver: (nullable id) observer

设备热插拔回调(仅适用于 Mac 系统)

setSystemVolumeType:

setSystemVolumeType:

– (NSInteger)setSystemVolumeType: (TXSystemVolumeType)type

设置系统音量类型(仅适用于移动端)

@deprecated v9.5 版本开始不推荐使用,建议使用 TRTCCloud 中的 startLocalAudio(quality) 接口替代之,通过 quality 参数来决策音质。

TXSystemVolumeType(Deprecated)

TXSystemVolumeType(Deprecated)

系统音量类型(仅适用于移动设备)

@deprecated v9.5 版本开始不推荐使用。
现代智能手机中一般都具备两套系统音量类型,即“通话音量”和“媒体音量”。 通话音量:手机专门为接打电话所设计的音量类型,自带回声抵消(AEC)功能,并且支持通过蓝牙耳机上的麦克风进行拾音,缺点是音质比较一般。当您通过手机侧面的音量按键下调手机音量时,如果无法将其调至零(也就是无法彻底静音),说明您的手机当前处于通话音量。 媒体音量:手机专门为音乐场景所设计的音量类型,无法使用系统的 AEC 功能,并且不支持通过蓝牙耳机的麦克风进行拾音,但具备更好的音乐播放效果。当您通过手机侧面的音量按键下调手机音量时,如果能够将手机音量调至彻底静音,说明您的手机当前处于媒体音量。
SDK 目前提供了三种系统音量类型的控制模式:自动切换模式、全程通话音量模式、全程媒体音量模式。

枚举 取值 描述
TXSystemVolumeTypeAuto 0 自动切换模式
TXSystemVolumeTypeMedia 1 全程媒体音量
TXSystemVolumeTypeVOIP 2 全程通话音量

TXAudioRoute

TXAudioRoute

音频路由(即声音的播放模式)

音频路由,即声音是从手机的扬声器还是从听筒中播放出来,因此该接口仅适用于手机等移动端设备。手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。 设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。 设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。

枚举 取值 描述
TXAudioRouteSpeakerphone 0 Speakerphone:使用扬声器播放(即“免提”),扬声器位于手机底部,声音偏大,适合外放音乐。
TXAudioRouteEarpiece 1 Earpiece:使用听筒播放,听筒位于手机顶部,声音偏小,适合需要保护隐私的通话场景。

TXMediaDeviceType

TXMediaDeviceType

设备类型(仅适用于桌面平台)


该枚举值用于定义三种类型的音视频设备,即摄像头、麦克风和扬声器,以便让一套设备管理接口可以操控三种不同类型的设备。

枚举 取值 描述
TXMediaDeviceTypeUnknown -1 未定义的设备类型
TXMediaDeviceTypeAudioInput 0 麦克风类型设备
TXMediaDeviceTypeAudioOutput 1 扬声器类型设备
TXMediaDeviceTypeVideoCamera 2 摄像头类型设备

TXMediaDeviceState

TXMediaDeviceState

设备操作

该枚举值用于本地设备的状态变化通知 onDeviceChanged。

枚举 取值 描述
TXMediaDeviceStateAdd 0 设备已被插入
TXMediaDeviceStateRemove 1 设备已被移除
TXMediaDeviceStateActive 2 设备已启用
TXMediaDefaultDeviceChanged 3 系统默认设备变更

TXMediaDeviceInfo

TXMediaDeviceInfo

音视频设备的相关信息(仅适用于桌面平台)

该结构体用于描述一个音视频设备的关键信息,比如设备 ID、设备名称等等,以便用户能够在用户界面上选择自己期望使用的音视频设备。

枚举类型 描述
deviceId 设备 ID (UTF-8)
deviceName 设备名称 (UTF-8)
deviceProperties 设备属性
type 设备类型

对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?