本文介绍iOS应用端,直播播放器的使用流程。
使用流程
创建直播播放器。
配置播放器的渲染窗口并设置播放器回调。
按需配置播放器的其他参数。例如:软硬解码偏好、视频画面模式等。
调用QueryLiveStreaming接口获取IPC设备的直播开播rtmp播放地址,并作为数据源设置给播放器。
开始播放。
停止播放。
销毁直播播放器。
使用示例
// 构造播放器实例
self.player = [[LVLivePlayer alloc] init];
// 设置必要的监听
self.player.livePlayerDelegate = self;
...
#pragma mark LVLivePlayerDelegate
- (void) onLivePlayerError:(LVLivePlayer *_Nonnull)player error:(NSError *_Nonnull)error{
[self appendInfoText:[NSString stringWithFormat:@"播放出错: %@\n", error]];
}
- (void) onLivePlayerStateChange:(LVLivePlayer *_Nonnull)player playerState:(LVPlayerState)state{
[self appendInfoText:[NSString stringWithFormat:@"状态变更: %d\n", state]];
}
- (void) onLivePlayerRenderedFirstFrame:(LVLivePlayer *_Nonnull)player elapsedTimeInMs:(NSInteger)elapsedTimeInMs{
[self appendInfoText:[NSString stringWithFormat:@"首帧出图耗时: %ldms\n", (long)elapsedTimeInMs]];
[self appendInfoText:[self.player getStatisticsInfo]];
}
- (void) onLivePlayerVideoSizeChanged:(LVLivePlayer *_Nonnull)player width:(NSInteger)width height:(NSInteger)height{
[self appendInfoText:[NSString stringWithFormat:@"图像大小变化: w=%ld h=%ld\n", (long)width, (long)height]];
}
- (void) onLivePlayerStandardSeiInfoUpdate:(LVLivePlayer *_Nonnull)player sei:(NSData*_Nonnull)data timeStamp:(NSInteger)timeStamp{
[self appendInfoText:[NSString stringWithFormat:@"sei: %lu %ld\n", (unsigned long)data.length, timeStamp]];
}
- (void) onLivePlayerVideoJitterBufferEmpty:(LVLivePlayer *_Nonnull)player{
}
...
// 创建LVGlkView,放在scrollview中具备画面缩放能力
self.lvGlkView = [[LVGlkView alloc] initWithFrame:CGRectMake(0,0,self.scrollView.frame.size.width, self.scrollView.frame.size.height)];;
[self.scrollView addSubview:self.lvGlkView];
[self.lvGlkView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(@(0));
make.centerY.equalTo(@(0));
make.height.equalTo(self.scrollView.mas_height);
make.width.equalTo(self.scrollView.mas_width);
}];
// 为播放器设置用于画面渲染的窗口, 画面不做旋转
[self.player setWindow:self.lvGlkView videoRotationMode:LV_MEDIA_VIDEO_ROTATE_0_CLOCKWISE];
...
// 设置数据源,rtmp地址从云服务获取
[self.player setDataSource:@"rtmp://xx.xx.xx.xx/live/xxx"isEncrypted:(YES) decryptIvBase64:(@"xxxxxxx") decryptKeyBase64:@"xxxxxxx"];
// 设置解码策略为硬解码优先
[self.player setDecoderStrategy:LV_DECODER_STRATEGY_HARDWARE_FIRST];
// 设置画面模式为保持宽高
[self.player setVideoScalingMode:LV_MEDIA_VIDEO_SCALING_MODE_FIT];
// 设置播放停止时画面保留最后一帧
[self.player setPlayerStoppedDrawingMode:LV_PLAYER_STOPPED_DRAWING_MODE_ALWAYS_KEEP_LAST_FRAME];
...
// 开始播放
[self.player start];
...
// 停止播放
[self.player stop];
文档内容是否对您有帮助?