推流回调方法
#pragma mark --- TXLivePushListener
// 推流器的回调方法
- (void)onPushEvent:(int)evtID withParam:(NSDictionary *)param {
dispatch_async(dispatch_get_main_queue(), ^{
if (evtID == PUSH_ERR_NET_DISCONNECT || evtID == PUSH_ERR_INVALID_ADDRESS) {
// 断开连接时,模拟点击一次关闭推流
// [self clickPush:self->_btnPush];
} else if (evtID == PUSH_ERR_OPEN_CAMERA_FAIL) {
// [self clickPush:self->_btnPush];
NSLog(@"获取摄像头权限失败,请前往隐私-相机设置里面打开应用权限");
} else if (evtID == PUSH_EVT_OPEN_CAMERA_SUCC) {
NSLog(@"打开摄像头成功");
} else if (evtID == PUSH_ERR_OPEN_MIC_FAIL) {
NSLog(@"获取麦克风权限失败,请前往隐私-麦克风设置里面打开应用权限");
} else if (evtID == PUSH_EVT_CONNECT_SUCC) {
NSLog(@"直播: 已经连接RTMP推流服务器");
// 是否开启静音
// [self.pusher setMute:[PushMoreSettingViewController isMuteAudio]];
// [self.pusher showVideoDebugLog:[PushMoreSettingViewController isShowDebugLog]];
// 设置视频镜像效果 默认观众看到的效果和主播一样
// [self.pusher setMirror:[PushMoreSettingViewController isMirrorVideo]];
// 判断当前是否是Wi-Fi网络 还可查看网络状态
} else if (evtID == PUSH_WARNING_NET_BUSY) {
NSLog(@"网络状况不佳:上行带宽太小,上传数据受阻");
}
});
}
拉流回调方法
#pragma mark --- TXLivePlayListener
// 拉流回调方法
- (void)onPlayEvent:(int)EvtID withParam:(NSDictionary *)param{
NSDictionary *dict = param;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"EvtID:%d", EvtID);
if (EvtID == PLAY_EVT_PLAY_BEGIN) {
// [self stopLoadingAnimation];
NSLog(@"视频播放开始");
} else if (EvtID == PLAY_ERR_NET_DISCONNECT || EvtID == PLAY_EVT_PLAY_END) {
// 断开连接时,模拟点击一次关闭播放
// [self clickPlay:_btnPlay];
if (EvtID == PLAY_ERR_NET_DISCONNECT) {
NSLog(@"< 直播,网络断连,且经多次重连抢救无效,可以放弃治疗,更多重试请自行重启播放");
NSString *msg = (NSString*)[dict valueForKey:EVT_MSG];
NSLog(@"PLAY_ERR_NET_DISCONNECT:%@", msg);
[self stopPlay];
}
} else if (EvtID == PLAY_EVT_PLAY_LOADING){
// [self startLoadingAnimation];
NSLog(@"视频播放loading");
} else if (EvtID == PLAY_EVT_CONNECT_SUCC) {
NSLog(@"< 直播,已经连接RTMP拉流服务器");
// 判断当前是否是Wi-Fi网络
}
else if (EvtID == PLAY_EVT_GET_MESSAGE) {
NSLog(@"消息事件");
NSData *msgData = param[@"EVT_GET_MSG"];
NSString *msg = [[NSString alloc] initWithData:msgData encoding:NSUTF8StringEncoding];
NSLog(@"msg%@", msg);
}
/*
7.2 新增
else if (EvtID == PLAY_EVT_GET_FLVSESSIONKEY) {
//NSString *Msg = (NSString*)[dict valueForKey:EVT_MSG];
//[self toastTip:[NSString stringWithFormat:@"event PLAY_EVT_GET_FLVSESSIONKEY: %@", Msg]];
}
*/
});
}
通过推流和拉流的回调方法我们可以更清楚地知道当前推流或拉流的状态。