双向对讲
更新时间:2025-01-16 19:29:24
语音通话
双向对讲只在直播时可用
typedef NS_ENUM(NSInteger, LVAudioVideoTalkType) {
LVAudioVideoTalkType_Audio, // 音频通话
LVAudioVideoTalkType_Video, // 视频通话
};
@protocol LVAudioVideoTalkDelegate <NSObject>
- (void)audioVideoTalk:(LVAudioVideoTalk *)audioVideoTalk didFailToAudioVideoTalkWithError:(NSError *)error;
@end
@protocol LVAudioVideoTalkInterface <NSObject>
/**
初始化对象
@param deviceInfo 设备信息
@param avTalkType 音频、视频通话话类型
@param delegate 代理对象
*/
- (id)initWithDeviceInfo:(LVPlayInfo *)deviceInfo avTalkType:(LVAudioVideoTalkType)avTalkType delegate:(id<LVAudioVideoTalkDelegate>)delegate;
/**
开始通话
*/
- (void)startTalk;
/**
结束通话
*/
- (void)endTalk;
@end
调用示例如下:
// 初始化音频通话引擎
-(LVAudioVideoTalk *)audioTalkEngin {
if (_audioTalkEngin == nil) {
LVPlayInfo *deviceInfo = [[LVPlayInfo alloc] init];
deviceInfo.iotId = self.curDevice.iotId;
deviceInfo.productKey = self.curDevice.productKey;
deviceInfo.deviceName = self.curDevice.deviceName;
_audioTalkEngin = [[LVAudioVideoTalk alloc] initWithDeviceInfo:deviceInfo avTalkType:LVAudioVideoTalkType_Audio delegate:self];
}
return _audioTalkEngin;
}
// 开始音频通话
[self.audioTalkEngin startTalk];
// 结束音频通话
[self.audioTalkEngin endTalk];
#pragma mark -- LVAudioVideoTalkDelegate --
- (void)audioVideoTalk:(LVAudioVideoTalk *)audioVideoTalk didFailToAudioVideoTalkWithError:(NSError *)error {
// code: -10023代表对讲通道被占用
[self showToast:[NSString stringWithFormat:@"%ld : %@",error.code,error.userInfo[NSLocalizedFailureReasonErrorKey]]];
if (self.isAudioTalking) {
[self functionAudioTalk:NO];// 停止对讲
}
}
备注:当didFailToAudioVideoTalkWithError:回调error.code = -10023时,代表当前语音对讲通道被其他端占用,应结束对讲。