LiteAVSDK
腾讯云音视频 SDK ,服务于数万家企业客户的高可用组件,致力于最大限度地节省您的研发成本。
TXDeviceManager

详细描述

腾讯云实时音视频设备管理接口


结构体说明

◆ TXDeviceManager

class TXDeviceManager

构造函数

(BOOL) - isFrontCamera
 
(NSInteger) - switchCamera
 
(BOOL) - isCameraZoomSupported
 
(CGFloat) - getCameraZoomMaxRatio
 
(NSInteger) - setCameraZoomRatio
 
(BOOL) - isAutoFocusEnabled
 
(NSInteger) - enableCameraAutoFocus
 
(NSInteger) - setCameraFocusPosition
 
(BOOL) - isCameraTorchSupported
 
(NSInteger) - enableCameraTorch
 
(NSInteger) - setSystemVolumeType
 
(NSInteger) - setAudioRoute
 
(NSArray< TXMediaDeviceInfo * > *_Nullable) - getDevicesList
 
(NSInteger) - setCurrentDevice
 
(TXMediaDeviceInfo *_Nullable) - getCurrentDevice
 
(NSInteger) - setCurrentDeviceVolume
 
(NSInteger) - getCurrentDeviceVolume
 
(NSInteger) - setCurrentDeviceMute
 
(BOOL) - getCurrentDeviceMute
 
(NSInteger) - startCameraDeviceTest
 
(NSInteger) - stopCameraDeviceTest
 
(NSInteger) - startMicDeviceTest
 
(NSInteger) - stopMicDeviceTest
 
(NSInteger) - startSpeakerDeviceTest
 
(NSInteger) - stopSpeakerDeviceTest
 

函数文档

◆ isFrontCamera()

- (BOOL) isFrontCamera

判断当前是否为前置摄像头

◆ switchCamera()

- (NSInteger) switchCamera: (BOOL)  frontCamera

切换摄像头

◆ isCameraZoomSupported()

- (BOOL) isCameraZoomSupported

查询当前摄像头是否支持缩放

◆ getCameraZoomMaxRatio()

- (CGFloat) getCameraZoomMaxRatio

查询当前摄像头支持的最大缩放比例

◆ setCameraZoomRatio()

- (NSInteger) setCameraZoomRatio: (CGFloat)  zoomRatio

设置当前摄像头的缩放比例

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

◆ isAutoFocusEnabled()

- (BOOL) isAutoFocusEnabled

查询是否支持自动识别人脸位置

◆ enableCameraAutoFocus()

- (NSInteger) enableCameraAutoFocus: (BOOL)  enabled

设置人脸自动识别

参数
enabledYES: 开启;NO:关闭,默认值:YES

◆ setCameraFocusPosition()

- (NSInteger) setCameraFocusPosition: (CGPoint)  position

设置摄像头焦点

参数
position对焦位置

◆ isCameraTorchSupported()

- (BOOL) isCameraTorchSupported

查询是否支持开关闪光灯(手电筒模式)

◆ enableCameraTorch()

- (NSInteger) enableCameraTorch: (BOOL)  enabled

开关闪光灯

enabled YES:开启;NO:关闭,默认值:NO

◆ setSystemVolumeType()

- (NSInteger) setSystemVolumeType: (TXSystemVolumeType type

设置通话时使用的系统音量类型

注意
  1. 需要在调用 startLocalAudio() 之前调用该接口。
  2. 如无特殊需求,不推荐您自行设置,您只需通过 enterRoom 设置好适合您的场景,SDK 内部会自动选择相匹配的音量类型。
参数
type系统音量类型,参见 TXSystemVolumeType 说明。如无特殊需求,不推荐您自行设置。

◆ setAudioRoute()

- (NSInteger) setAudioRoute: (TXAudioRoute route

设置音频路由

微信和手机 QQ 视频通话功能的免提模式就是基于音频路由实现的。 一般手机都有两个扬声器,一个是位于顶部的听筒扬声器,声音偏小;一个是位于底部的立体声扬声器,声音偏大。 设置音频路由的作用就是决定声音使用哪个扬声器播放。

参数
route音频路由,即声音由哪里输出(扬声器、听筒),默认值:TXAudioRouteSpeakerphone

◆ getDevicesList()

- (NSArray<TXMediaDeviceInfo *> * _Nullable) getDevicesList: (TXMediaDeviceType type

获取设备列表

参数
type设备类型

◆ setCurrentDevice()

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

设置要使用的设备

参数
type设备类型
deviceId从 getDevicesList 中得到的设备 ID

◆ getCurrentDevice()

- (TXMediaDeviceInfo * _Nullable) getCurrentDevice: (TXMediaDeviceType type

获取当前的设备信息

参数
type设备类型

◆ setCurrentDeviceVolume()

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

设置当前设备的音量

参数
volume音量值,范围0 - 100
type设备类型,仅支持 AudioInput 和 AudioOutput 类型。

◆ getCurrentDeviceVolume()

- (NSInteger) getCurrentDeviceVolume: (TXMediaDeviceType type

获取当前设备的音量

参数
type设备类型,仅支持 AudioInput 和 AudioOutput 类型。

◆ setCurrentDeviceMute()

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

设置当前设备的静音状态

参数
mute设置为 YES 时,麦克风设备静音
type设备类型,仅支持 AudioInput 和 AudioOutput 类型。

◆ getCurrentDeviceMute()

- (BOOL) getCurrentDeviceMute: (TXMediaDeviceType type

获取当前设备的静音状态

参数
type设备类型,仅支持 AudioInput 和 AudioOutput 类型。

◆ startCameraDeviceTest()

- (NSInteger) startCameraDeviceTest: (NSView *)  view

开始摄像头测试

注意
在测试过程中可以使用 setCurrentCameraDevice 接口切换摄像头。
参数
view预览画面所在的父控件

◆ stopCameraDeviceTest()

- (NSInteger) stopCameraDeviceTest

结束摄像头测试

◆ startMicDeviceTest()

- (NSInteger) startMicDeviceTest: (NSInteger)  interval
testEcho: (void(^)(NSInteger volume))  testEcho 

开始麦克风测试

该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。

◆ stopMicDeviceTest()

- (NSInteger) stopMicDeviceTest

结束麦克风测试

◆ startSpeakerDeviceTest()

- (NSInteger) startSpeakerDeviceTest: (NSString *)  audioFilePath
onVolumeChanged: (void(^)(NSInteger volume, BOOL isLastFrame))  volumeBlock 

开始扬声器测试

该方法播放指定的音频文件测试播放设备是否能正常工作。如果能听到声音,说明播放设备能正常工作。

◆ stopSpeakerDeviceTest()

- (NSInteger) stopSpeakerDeviceTest

结束扬声器测试

◆ TXMediaDeviceInfo

class TXMediaDeviceInfo

属性

TXMediaDeviceType type
 
NSString * deviceId
 
NSString * deviceName
 

属性说明

◆ type

- (TXMediaDeviceType) type
readwritenonatomicassign

设备类型

◆ deviceId

- (NSString*) deviceId
readwritenonatomiccopy

设备ID

◆ deviceName

- (NSString*) deviceName
readwritenonatomiccopy

设备名称

枚举类型说明

◆ TXSystemVolumeType

enum TXSystemVolumeType : NSInteger

系统音量类型

智能手机一般具备两种系统音量类型,即通话音量类型和媒体音量类型。

  • 通话音量:手机专门为通话场景设计的音量类型,使用手机自带的回声抵消功能,音质相比媒体音量类型较差, 无法通过音量按键将音量调成零,但是支持蓝牙耳机上的麦克风。
  • 媒体音量:手机专门为音乐场景设计的音量类型,音质相比于通话音量类型要好,通过通过音量按键可以将音量调成零。 使用媒体音量类型时,如果要开启回声抵消(AEC)功能,SDK 会开启内置的声学处理算法对声音进行二次处理。 在媒体音量模式下,蓝牙耳机无法使用自带的麦克风采集声音,只能使用手机上的麦克风进行声音采集。

SDK 目前提供了三种系统音量类型的控制模式,分别为:

  • Auto:“麦上通话,麦下媒体”,即主播上麦时使用通话音量,观众不上麦则使用媒体音量,适合在线直播场景。 如果您在 enterRoom 时选择的场景为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom,SDK 会自动选择该模式。
  • VOIP:全程使用通话音量,适合多人会议场景。 如果您在 enterRoom 时选择的场景为 TRTCAppSceneVideoCall 或 TRTCAppSceneAudioCall,SDK 会自动选择该模式。
  • Media:通话全程使用媒体音量,不常用,适合个别有特殊需求(如主播外接声卡)的应用场景。
枚举值
TXSystemVolumeTypeAuto 
TXSystemVolumeTypeMedia 
TXSystemVolumeTypeVOIP 

◆ TXAudioRoute

enum TXAudioRoute : NSInteger

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

微信和手机 QQ 里的视频通话功能,都有一个免提模式,开启后就不用把手机贴在耳朵上,这个功能就是基于音频路由实现的。 一般手机都有两个扬声器,设置音频路由的作用就是要决定声音从哪个扬声器播放出来:

  • Speakerphone:扬声器,位于手机底部,声音偏大,适合外放音乐。
  • Earpiece:听筒,位于手机顶部,声音偏小,适合通话。
枚举值
TXAudioRouteSpeakerphone 

扬声器

TXAudioRouteEarpiece 

听筒

◆ TXMediaDeviceType

enum TXMediaDeviceType : NSInteger

设备类型(仅 Mac)

在 Mac 上,每一种类型的设备都可能有多个,TRTC SDK 的 Mac 版本提供了一系列函数用来操作这些设备。

枚举值
TXMediaDeviceTypeUnknown 

未定义

TXMediaDeviceTypeAudioInput 

麦克风

TXMediaDeviceTypeAudioOutput 

扬声器或听筒

TXMediaDeviceTypeVideoCamera 

摄像头