构造函数 | |
(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 的所有接口函数,如无特殊说明,都建议在主线程调用
- 注解
- 调用此方法创建 JCMediaDevice 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCMediaDevice 对象
- 调用此方法前确保 JCClient 已完成初始化,即 state 状态值不等于 JCClientStateNotInit
- 参数
-
client JCClient 对象 callback JCMediaDeviceCallback 对象,用于回调相关通知
- 返回
- 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 给出 onAudioInputFrame 或 onAudioOutputFrame 回调时,需要使用该方法注册回调。 该方法需要在加入频道前或开始通话前调用。
- 参数
-
callback 实现 JCAudioFrameCallback 协议的对象。传入 nil 表示取消注册。我们建议在收到 onLeave 或 onStop 或 onCallItemRemove 后调用,来释放语音观测器对象。
◆ startAudio
- (bool) startAudio |
启动音频
在通话连接中或者加入频道成功时,SDK内部会自动调用此方法来启动音频,上层无需再调用此方法
- 返回
- 调用是否成功
- true:调用成功
- false:调用失败
◆ stopAudio
- (bool) stopAudio |
停止音频
在通话挂断时或者离开频道时,SDK内部会自动调用此方法来停止音频,上层无需再调用此方法
- 返回
- 调用是否成功
- true:调用成功
- false:调用失败
属性说明
◆ audioInterrupt
|
readnonatomicassign |
是否声音被中断
◆ audioParam
|
readwritenonatomicstrong |
音频参数
此参数不设置,将使用默认值。此参数在调用 startAudio 方法前设置,即连接通话或加入频道前设置此参数
◆ audioStart
|
readnonatomicassign |
音频是否启动
一般正式开启通话前需要调用此接口
- true:调用成功
- false:调用失败
◆ defaultSpeakerOn
|
readwritenonatomicassign |
没有插入耳机或外接蓝牙时是否默认开启扬声器,默认关闭,iOS 使用
- true 默认开启
- false 默认不开启
◆ useInternalAudioDeviceLogic
|
readwritenonatomicassign |
是否使用内部音频设备逻辑 内部音频设备逻辑如下:
1.打开扬声器 - 使用扬声器输出声音
2.连上蓝牙耳机 - 使用蓝牙耳机输出声音,如果扬声器开着则关闭扬声器
3.插入耳机 - 使用耳机输出声音,如果扬声器开着则关闭扬声器
4.蓝牙耳机和有线耳机以最后连上的作为输出
5.关闭扬声器 - (蓝牙耳机或有线耳机) 优于 听筒
- true: 使用内部音频设备逻辑
- false: 不使用内部音频设备逻辑
该类的文档由以下文件生成:
- JCSDKOC/JCSDKOC/JCMediaDevice/JCMediaDevice.h
← 自定义音频采集和渲染 Android →