获取roomID、access_token
获取roomID、access_token
对接流程
1: 创建Player
SDK 中的 VHLivePlayer 模块负责实现直播播放功能。
VHLivePlayer _livePlayer = [[VHLivePlayer alloc] init];
1: 设置 渲染View、delegate
- delegate 设置播放器代理
- 接下来我们要给播放器的视频画面找个地方来显示,iOS系统中使用 view 作为基本的界面渲染单位,所以您只需要准备一个 view 并调整好布局就可以了。
_livePlayer.delegate = self;
_livePlayer.view.frame = self.view.bounds;
[self.view insertSubview:_livePlayer.view atIndex:0];
如果您要调整渲染画面的大小,只需要调整_livePlayer.view大小和位置即可
2: 开始播放
- roomId 推流房间id 可以通过调用 api 创建
- accessToken 可以通过调用 api 获得
NSString* roomId = @"lss_xxxxxx";
NSString* accessToken = @"xxxxxxxxxx";
[_livePlayer startPlay:roomId accessToken:accessToken];
3: 画面调整
_livePlayer.scalingMode = VHPlayerScalingModeAspectFit;
可选值 | 含义 |
---|---|
VHPlayerScalingModeFill | 将图像拉伸填充 |
VHPlayerScalingModeAspectFit | 将图像等比例缩放,适配最长边,缩放后的宽和高都不会超过显示区域,居中显示,画面可能会留有黑边 |
VHPlayerScalingModeAspectFill | 将图像等比例铺满整个屏幕,多余部分裁剪掉,此模式下画面不会留黑边,但可能因为部分区域被裁剪而显示不全 |
4: 清晰度切换
_livePlayer.curDefinition = VHDefinitionOrigin;
可选值 | 含义 |
---|---|
VHDefinitionOrigin | 原画 |
VHDefinitionUHD | 超高清 |
VHDefinitionHD | 高清 |
VHDefinitionSD | 标清 |
VHDefinitionAudio | 纯音频 |
5: 静音
默认为NO 关闭静音状态 开启静音状态设置为YES即可
_livePlayer.mute = YES;
6: 暂停/恢复播放
对于直播播放而言,并没有真正意义上的暂停,所谓的直播暂停,只是画面冻结和关闭声音,而云端的视频源还在不断地更新着,所以当您调用 resume 的时候,会从最新的时间点开始播放,这跟点播是有很大不同的(点播播放器的暂停和继续与播放本地视频文件时的表现相同)。
// 暂停
[_livePlayer pause];
// 恢复
[_livePlayer resume];
7: 结束播放
结束当前直播,播放器资源并未释放
[_livePlayer stopPlay];
8: 销毁播放器
释放播放器资源
[_livePlayer destroyPlayer];
事件处理
- 推流状态监听 SDK 通过 VHLivePlayerDelegate 代理来监听推流相关的事件
状态 | 含义 |
---|---|
VHPlayerStatusLoading | 加载中 |
VHPlayerStatusPlaying | 播放中 |
VHPlayerStatusStop | 停止播放 |
VHPlayerStatusPause | 播放暂停 |
- 错误通知
错误类型 | 数值 | 含义说明 |
---|---|---|
VHLivePlayErrorNone | 0 | |
VHivePlayGetUrlError | 1 | 获取服务器rtmpUrl错误 |
VHLivePlayParamError | 2 | 参数错误 |
VHLivePlayRecvError | 3 | 接受数据错误 |
VHLivePlayCDNConnectError | 4 | CDN链接失败 |
VHLivePlayStopPublish | 5 | 已停止推流 |