播流

播流

登录房间成功后,会收到房间内的除自己以外的推流数据,通过调用播流接口,可以播放房间内指定远端流的流视频。

步骤

1 设置房间流变化回调

必须先登录房间成功才能进行播流,在前面调用登录房间接口的时候您已经设置了一个遵循 协议的对象作为接收SDK回调的delegate,那么将在该对象对应的类中实现以下播流相关回调。

1.1 房间内新加入流信息回调

登录房间成功以后,当房间内有新增视频流时,会触发CCLiveEngineDelegate的代理回调方法:onLiveStreamsAddedCallBack:。此时APP层可在回调方法中处理新增视频流,比如分配新的播放容器view,调用开始播流方法开始播流。

// Objective-C

/*!
@brief 新加入流信息回调(除自己外的流)

@param joinedStreamsList 新加入的流信息列表
*/
- (void)onLiveStreamsAddedCallBack:(NSArray *)joinedStreamsList{
 //处理新增用户,分配新的播放view,调用开始播流方法

}

1.2 离开房间的流信息回调

登录房间成功以后,当房间内有视频流离开时,会触发CCLiveEngineDelegate的代理回调方法:onLiveStreamsRemovedCallBack:。此时APP层可在回调方法中处理离开的视频流,需要调用停止播流方法并在UI上移除已离开的流的播放视频的view。

// Objective-C

/*!
@brief 离开房间的流信息回调

@param offlineStreamsList  离开的流信息列表
*/
- (void)onLiveStreamsRemovedCallBack:(NSArray *)offlineStreamsList{

 //处理离开用户,如调用停止播流方法等

}

1.3 开始播流

1.3.1 开始播流

当收到上述1.1房间内新加入流信息回调(onLiveStreamsAddedCallBack:)时,需要主动调用开始播流实现远端视频的播放,否则不会展示播流画面。

播放流数据的方法:playStream:withPlayView:andRendMode:

注意:必须登录成功,才能进行播流,否则播流无效。

// Objective-C

 [self.liveSDkManager playStream:streamInfo  withPlayView:prewView andRendMode:CCVideoRenderMode_PerfectFill];

方法参数说明:

参数 类型 是否必传 描述
streamInfo CCStreamInfo 必传 要播放的流信息,详情参照CCStreamInfo
playView UIView 必传 显示播流画面的容器view
rendMode CCVideoRenderMode 选传 播流填充模式,详情参照CCVideoRenderMode
1.3.2 开始播流结果回调

当调用开始播流接口后,会收到播流结果回调,表示播流成功与否。返回code:0表示播流成功,code为其他表示播流异常。

// Objective-C

/*!
 @brief 播放开始回调
 @param code   0:播放成功。其他:播放异常
 @param streamId  开始播放的流名
 */
- (void)onPlayDidStartCallBackWithCode:(NSInteger)code andStreamId:(NSString *)streamId{
    NSLog(@"播放开始回调ID= %@",streamId);
}

1.4 停止播流

1.4.1 停止播流方法

当收到上述1.2离开房间的流信息回调(onLiveStreamsRemovedCallBack:)时候,需要停止播放该流数据和从UI上移除播流View,停止播放流数据的方法:stopPlayStream:

// Objective-C

 [self.liveSDkManager stopPlayStream:localUserInfo];

方法参数说明:

参数 类型 是否必传 描述
streamInfo CCStreamInfo 必传 要播放的流信息,详情参照CCStreamInfo
1.4.2 停止播流回调

当主动调用停止播流接口或者其他网络异常引起播放中断的时候会收到该回调,可用来监控异常停止播流的视频流。

// Objective-C

/*!
 @brief 播放结束回调

 @param errorCode 0 代表正常结束,其他值均代表异常结束
 @param streamId 结束结束的流名
 */
- (void)onPlayDidStopCallBackWithCode:(NSInteger)errorCode andStreamId:(NSString *)streamId{

}

1.5 播放流网络状态回调【仅在调试时使用,上线时不要使用】

当成功调用开始播流之后,就会每隔1秒收到1次该回调,主要用来调试查看播流质量状况。

// Objective-C

/*!
 @brief (可选)回调播放流网络状态(推荐仅在调试时使用)

 @param dicStatus @“streamID”(流名称) @"videoFps"(当前视频帧率), @"videoBitrateKbps"(当前视频码率),@“delay”(延时),"networkLost"(丢包)
*/

- (void)onPlayStreamStatusCallBack:(NSDictionary *)dicStatus{

}