构造函数

(bool) - startAudio
 
(bool) - stopAudio
 
(void) - registerAudioFrameCallback:
 
(bool) - inputCustomAudioData:sampleRateHz:channels:playDelayMS:recDelayMS:clockDrift:
 
(bool) - getAudioOutputData:length:sampleRateHz:channels:
 
(void) - enableSpeaker:
 
(NSString *__nullable) - getAudioOutputType
 
(bool) - isSpeakerOn
 

类方法

(JCMediaDevice *__nullable) + create:callback:
 
(void) + destroy
 

属性

JCMediaDeviceAudioParam *_Nonnull audioParam
 
bool audioInterrupt
 
bool useInternalAudioDeviceLogic
 
bool audioStart
 
bool defaultSpeakerOn
 

详细描述

设备模块

注解
扬声器通过 JCMediaDevice 类中 enableSpeaker 进行开关

函数文档

◆ create:callback:

+ (JCMediaDevice* __nullable) create: (JCClient *__nonnull)  client
callback: (id< JCMediaDeviceCallback > __nonnull)  callback 

创建 JCMediaDevice 对象

JCMediaDevice 的所有接口函数,如无特殊说明,都建议在主线程调用

注解
参数
clientJCClient 对象
callbackJCMediaDeviceCallback 对象,用于回调相关通知
返回
JCMediaDevice 对象
异常
JCClient、JCMediaDeviceCallback 任意一个参数传空就会调用失败

◆ destroy

+ (void) destroy

销毁 JCMediaDevice 对象

该方法为同步调用,需要等待 JCMediaDevice 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaDevice 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCMediaDevice 对象,否则会出现崩溃。
如需在销毁后再次创建 JCMediaDevice 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ enableSpeaker:

- (void) enableSpeaker: (bool)  enable

开启/关闭扬声器,iOS 使用

只有在音频已经启动的情况下调用才会生效

参数
enable开启或者关闭扬声器
  • true: 开启
  • false: 关闭

◆ getAudioOutputData:length:sampleRateHz:channels:

- (bool) getAudioOutputData: (unsigned char *_Nonnull)  buf
length: (int)  length
sampleRateHz: (int)  sampleRateHz
channels: (int)  channels 

获取音频输出数据

autoStartAudioOutputDevice 为 false 时才可以获取到音频输出数据 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法获取音频输出数据

参数
buf字节缓冲区,从媒体层获取的音频输出数据将被存入此缓冲区,需要传入 unsigned char* 对象。缓冲区的容量为(采样频率*采样通道数/100)
sampleRateHz输出源的采集频率,取值范围:8000,16000,32000,44100,48000
channels输出源的采样通道数,取值范围:1或2
length音频输出数据的字节长度,即 buf 参数的字节长度
返回
是否正常调用
  • true: 正常执行调用流程
  • false: 调用失败

◆ getAudioOutputType

- (NSString* __nullable) getAudioOutputType

获得当前音频模式,目前只支持听筒和扬声器,iOS 使用

返回
音频模式

◆ inputCustomAudioData:sampleRateHz:channels:playDelayMS:recDelayMS:clockDrift:

- (bool) inputCustomAudioData: (NSData *_Nonnull)  data
sampleRateHz: (int)  sampleRateHz
channels: (int)  channels
playDelayMS: (int)  playDelayMS
recDelayMS: (int)  recDelayMS
clockDrift: (int)  clockDrift 

将音频输入数据输入到媒体层 当 autoStartAudioInputDevice 为 false 时才可以将音频输入数据输入到媒体层 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法传入音频数据

参数
data外部采集数据源,需要传入 NSData 对象
sampleRateHz外部输入源的采样频率,取值范围:8000,16000,32000,44100,48000
channels外部输入源的采样通道数,取值范围:1或2
playDelayMS播放延时 一般设为0
recDelayMS采集延时 一般设为0
clockDrift时钟漂移 一般设为0
返回
是否正常调用
  • true: 正常执行调用流程
  • false: 调用失败

◆ isSpeakerOn

- (bool) isSpeakerOn

扬声器是否已打开,iOS 使用

  • true: 已打开
  • false: 未打开

◆ registerAudioFrameCallback:

- (void) registerAudioFrameCallback: (id< JCAudioFrameCallback > __nullable)  callback

注册语音观测器对象。

该方法用于注册语音观测器对象,即注册回调。当需要 SDK 给出 onAudioInputFrameonAudioOutputFrame 回调时,需要使用该方法注册回调。 该方法需要在加入频道前或开始通话前调用。

参数
callback实现 JCAudioFrameCallback 协议的对象。传入 nil 表示取消注册。我们建议在收到 onLeaveonStoponCallItemRemove 后调用,来释放语音观测器对象。

◆ startAudio

- (bool) startAudio

启动音频

在通话连接中或者加入频道成功时,SDK内部会自动调用此方法来启动音频,上层无需再调用此方法

返回
调用是否成功
  • true:调用成功
  • false:调用失败

◆ stopAudio

- (bool) stopAudio

停止音频

在通话挂断时或者离开频道时,SDK内部会自动调用此方法来停止音频,上层无需再调用此方法

返回
调用是否成功
  • true:调用成功
  • false:调用失败

属性说明

◆ audioInterrupt

- (bool) audioInterrupt
readnonatomicassign

是否声音被中断

◆ audioParam

- (JCMediaDeviceAudioParam* _Nonnull) audioParam
readwritenonatomicstrong

音频参数

此参数不设置,将使用默认值。此参数在调用 startAudio 方法前设置,即连接通话或加入频道前设置此参数

◆ audioStart

- (bool) audioStart
readnonatomicassign

音频是否启动

一般正式开启通话前需要调用此接口

  • true:调用成功
  • false:调用失败

◆ defaultSpeakerOn

- (bool) defaultSpeakerOn
readwritenonatomicassign

没有插入耳机或外接蓝牙时是否默认开启扬声器,默认关闭,iOS 使用

  • true 默认开启
  • false 默认不开启

◆ useInternalAudioDeviceLogic

- (bool) useInternalAudioDeviceLogic
readwritenonatomicassign

是否使用内部音频设备逻辑 内部音频设备逻辑如下:
1.打开扬声器 - 使用扬声器输出声音
2.连上蓝牙耳机 - 使用蓝牙耳机输出声音,如果扬声器开着则关闭扬声器
3.插入耳机 - 使用耳机输出声音,如果扬声器开着则关闭扬声器
4.蓝牙耳机和有线耳机以最后连上的作为输出
5.关闭扬声器 - (蓝牙耳机或有线耳机) 优于 听筒

  • true: 使用内部音频设备逻辑
  • false: 不使用内部音频设备逻辑

该类的文档由以下文件生成:
最后更新时间: 2023/2/9 15:27:30