开放平台
首页平台概述
开发者
  • API文档
  • SDK
产品功能
  • 新手入门
  • 产品功能
常见问题
首页平台概述
开发者
  • API文档
  • SDK
产品功能
  • 新手入门
  • 产品功能
常见问题
  1. 观看回放
  • demo
  • JS SDK
    • 产品介绍
    • 快速接入
    • SDK 对接示例
    • 观看直播
    • 暖场视频
    • 房间消息说明
    • 互动连麦
    • 文档白板
    • 全局事件
    • 全局错误码
    • 版本更新记录
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-公告
      • 互动-商品
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-聊天
      • 互动-优惠券
      • 互动-点赞
    • 直播间拓展功能
      • 资料下载
      • 观看限制验证
      • 观看协议
      • 回放章节
  • 点播SDK
    • 点播上传SDK
    • 更新记录
  • iOS SDK
    • 整体介绍
    • 快速接入
    • SDK 登录
    • 暖场视频
    • 视频轮询
    • 直播彩排
    • 高级美颜
    • 云导播
    • 观看协议
    • 文档白板演示
    • 聊天功能
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 观众互动
      • 推流摄像头
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-章节打点
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播间拓展能力
      • 直播间特色功能配置项
      • 文件下载
      • 修改角色昵称
      • 观看权限校验
      • 投屏
      • 虚拟人数
    • 观看回放
      • 观看回放
    • 防录屏
      • 跑马灯
    • 字段说明
      • 互动活动详情字段
      • 错误码说明
      • 常量定义
      • 活动详情字段说明
    • 版本更新说明
      • 版本更新信息
      • v2.3.0 到 v2.4.0 升级说明
      • v3.0.1 到 v3.2.0 升级说明
      • V2.9.0到v3.0.1升级说明
      • v6.3.0
      • v6.2.1
      • v3.2.0 到 v4.0.1
      • v2.7.0 到 v2.8.0、v2.9.0 升级说明
      • 6.5.0
      • v5.0.x 到 v6.0.0
      • v6.4.0
  • Adroid SDK
    • 整体介绍
    • 快速接入
    • SDK登录
    • 暖场视频
    • 视频轮巡功能
    • 直播彩排
    • 高级美颜
    • 云导播功能
    • 观看协议
    • 文档白板
    • 聊天功能
    • 房间消息
    • 信息采集说明
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
      • 观众观看互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播拓展功能
      • 修改角色名称
      • 文件下载
      • 投屏演示
      • 虚拟人数
      • 观看权限校验
      • 直播间特色功能配置项
    • 观看回放
      • 观看回放/点播
    • 防录屏
      • 直播水印
      • 跑马灯
    • 字段说明
      • 房间消息字段说明
      • 聊天消息字段说明
      • 活动详情字段说明
    • 版本更新说明
      • 更新记录
      • v6.4.0
      • v6.3.0
      • v6.2.3
      • v6.2.1
      • v6.2.0
      • v6.1.0
      • v6.0.0
      • v5.0.0
      • v4.1.0
      • v4.0.0
      • v3.3.0
  • APP嵌入支付说明
    • 支付调起说明
    • Scheme规则说明
  1. 观看回放

观看回放

在直播回放状态下或者点播活动中,观众可以通过 SDK 进入直播间观看回放或点播,补足除直播场景之外视频点播的场景需求。

关键步骤#

1.
initWithDelegate 初始化 VHMoviePlayer 对象
2.
moviePlayer.moviePlayerView 添加播放器到 view 上
3.
startPlayback 观看回放/点播视频

核心类#

类名类描述
VHallMoviePlayer视频直播类

基础属性#

属性属性描述
delegate代理对象
moviePlayerView获取播放器 view
documentView获取文档演示 view,如果没有文档则为 nil (在收到"文档显示/隐藏回调"后获取)
waterImg水印(在收到"播放连接成功回调"后使用)
realityBufferTime获取 RTMP 播放实际的缓冲时间,单位毫秒
playMode获取当前视频观看模式
activeState活动状态 (在收到"视频信息预加载回调"或"播放连接成功回调"后使用)
playerState获取播放器状态
webinarInfo活动详情
timeout设置链接的超时时间 默认 5000 毫秒,单位为毫秒 MP4 点播 最小 10000 毫秒
bufferTime设置 RTMP 的缓冲时间 默认 6 秒 单位为秒 必须>0 值越小延时越小,卡顿增加
movieScalingMode设置视频的填充模式 默认是自适应模式:VHRTMPMovieScalingModeAspectFit
defaultDefinition设置默认播放的清晰度 默认原画
curDefinition设置当前播放的清晰度
duration视频时长
playableDuration可播放时长
rate点播倍速播放速率 0.50, 0.67, 0.80, 1.0, 1.25, 1.50, and 2.0
currentPlaybackTime当前播放时间点
initialPlaybackTime初始化要播放的位置

播放器关键方法#

方法方法描述
initWithDelegate初始化
preLoadRoomWithParam预加载房间信息
startPlayback观看回放/点播视频
pausePlay暂停播放
reconnectPlay恢复播放
stopPlay停止播放
setMute设置静音
destroyMoivePlayer销毁播放器

辅助方法#

方法方法描述
takeVideoScreenshot获得当前时间视频截图仅支持化蝶
getRecordListWithWebinarId获取指定活动下的回放列表
cleanLastFrame清空视频剩余的最后一帧画面
dlnaMappingObject设置投屏对象
reconnectSocket重连 socket
playerBackgroundColor设置播放器背景色
playerBackgroundImage设置播放器背景图片
audioOutput设置音频输出设备

VHallMoviePlayerDelegate 代理方法#

方法方法描述
preLoadVideoFinish视频信息预加载完成回调
connectSucceed播放连接成功回调
bufferStart缓冲开始回调
bufferStop缓冲结束回调
downloadSpeed下载速率的回调
recStreamtype视频流类型回调
playError播放时错误的回调
activeStateDidChange当前活动状态回调
loadVideoPlayMode当前视频播放模式,以及是否为 vr 活动回调
loadVideoPlayModeList当前视频支持的播放模式列表回调
loadVideoDefinitionList当前视频支持的清晰度列表回调
statusDidChange播放器状态回调
videoSize视频宽高回调(支持直播与点播)
currentTime当前播放时间回调
videoPointArr视频打点
isKickout被踢出
isCast_screen当前是否支持投屏功能
isHaveDocument主持人显示/隐藏文档
documentDelayTime直播文档同步,直播文档有延迟,指定需要延迟的秒数
announcementContentDidChange发布公告的回调
isQuestion_status当前是否开启问答功能
is_file_download当前是否开启文件下载功能

初始化#

方法 API
初始化 VHMoviePlayer 对象
- (instancetype)initWithDelegate:(id <VHallMoviePlayerDelegate>)delegate;
方法入参
参数名称是否必须示例备注
delegate是self代理对象
方法返回参数
参数名称备注
VHMoviePlayer观看直播对象
方法示例
@interface UIViewController ()<VHallMoviePlayerDelegate>
// 播放器
@property (nonatomic, strong) VHallMoviePlayer  *moviePlayer;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    /// 初始化
    self.moviePlayer = [[VHallMoviePlayer alloc]initWithDelegate:self];
}

预加载房间信息#

方法 API
在收到"视频信息预加载完成回调"后,即可使用聊天、签到、问答、抽奖等功能,然后择机调用 startPlay/startPlayback 进行播放,注意使用此方法后,startPlay 和 startPlayback 传参将不再生效(此方法主要用于播放之前需要使用聊天等功能)
- (void)preLoadRoomWithParam:(NSDictionary *)param;
方法入参
参数名称是否必须示例备注
param是字典活动基础信息,包含以下参数
param[@"id"]是123456789活动 Id,必传
param[@"record_id"]否6781736回放 id,通过列表获取 getRecordListWithWebinarId
param[@"name"]否阿超昵称
param[@"auth_model"]否10 : 校验观看权限(默认) 1 : 不校验观看权限
方法示例
NSMutableDictionary * param = [[NSMutableDictionary alloc] init];
param[@"id"] = @"123456789";
param[@"name"] = @"阿超";
param[@"auth_model"] = @(1);
[self.moviePlayer preLoadRoomWithParam:param];

观看回放/点播视频#

方法 API
在收到"播放连接成功回调"后,才可使用聊天、签到、问答、抽奖等功能
- (BOOL)startPlayback:(NSDictionary *)param;
方法入参
参数名称是否必须示例备注
param是字典活动基础信息,包含以下参数
param[@"id"]是123456789活动 Id,必传
param[@"name"]否阿超昵称
param[@"auth_model"]否10 : 校验观看权限(默认) 1 : 不校验观看权限
方法示例
NSMutableDictionary * param = [[NSMutableDictionary alloc] init];
param[@"id"] = @"123456789";
param[@"name"] = @"阿超";
param[@"auth_model"] = @(1);
[self.moviePlayer startPlayback:param];

暂停播放#

方法 API
直播等同于 stopPlay,停止播放
- (void)pausePlay;
方法示例
[self.moviePlayer pausePlay];

恢复播放#

方法 API
播放出错/暂停播放后恢复播放
- (BOOL)reconnectPlay;
方法示例
[self.moviePlayer reconnectPlay];

停止播放#

方法 API
- (BOOL)stopPlay;
方法示例
[self.moviePlayer stopPlay];

设置静音#

方法 API
- (void)setMute:(BOOL)mute;
方法入参
参数名称是否必须示例备注
mute是YES是否静音
方法示例
[self.moviePlayer setMute:YES];

销毁播放器#

方法 API
- (void)destroyMoivePlayer;
方法示例
[self.moviePlayer destroyMoivePlayer];

获得当前时间视频截图仅支持化蝶#

方法 API
- (void)takeVideoScreenshot:(void (^)(UIImage* image))screenshotBlock;
方法示例
[_moviePlayer takeVideoScreenshot:^(UIImage *image) {

}];

获取指定活动下的回放列表#

方法 API
+ (void)getRecordListWithWebinarId:(NSString *)webinarId pageNum:(NSInteger)pageNum pageSize:(NSInteger)pageSize complete:(void (^)(NSArray <VHRecordListModel *> *recordList, NSError *error))complete
方法入参
参数名称是否必须示例备注
webinarId是12345678活动 Id,必传
pageNum是1页数
pageSize否10一页几个
方法示例
[VHWebinarBaseInfo getRecordListWithWebinarId:self.webinar_id pageNum:1 pageSize:10 complete:^(NSArray<VHRecordListModel *> *recordList, NSError *error) {

}];

清空视频剩余的最后一帧画面#

方法 API
- (void)cleanLastFrame;
方法示例
[self.moviePlayer cleanLastFrame]

设置投屏对象#

方法 API
投屏功能使用步骤:1、设置 DLNAobj 2、收到 DLNAobj 设备列表回调后,设置投屏设备 3、DLNAobj 初始化播放。如果播放过程中多个 player 使用对同一个 DLNAobj,则 DLNAobj 需要重新初始化播放
- (BOOL)dlnaMappingObject:(VHDLNAControl *)DLNAobj;
方法入参
参数名称是否必须示例备注
DLNAobj是DLNAobj投屏对象
方法返回参数
参数名称备注
return BOOLYES 可投屏,NO 不可投屏
方法示例
[self.moviePlayer dlnaMappingObject:DLNAobj];

重连 socket#

方法 API
重连
- (BOOL)reconnectSocket;
方法示例
[self.moviePlayer reconnectSocket];

设置播放器背景色#

方法 API
默认黑色
- (void)playerBackgroundColor:(UIColor *)playerBgColor;
方法入参
参数名称是否必须示例备注
playerBgColor是[UIColor redColor]颜色
方法示例
[self.moviePlayer playerBackgroundColor:[UIColor blackColor]];

设置播放器背景图片#

方法 API
- (void)playerBackgroundImage:(UIImage *)playerBgImage;
方法入参
参数名称是否必须示例备注
playerBgImage是[UIImage new]图片
方法示例
[self.moviePlayer playerBackgroundImage:[UIImage new]];

设置音频输出设备#

方法 API
+ (void)audioOutput:(BOOL)inSpeaker;
方法入参
参数名称是否必须示例备注
inSpeaker是YES音频类别
方法示例
[self.moviePlayer audioOutput:YES];

视频信息预加载完成回调#

方法 API
前提需使用方法"preLoadRoomWithParam",收到此回调后,可以使用聊天、签到、问答、抽奖等功能,择机调用 startPlay/startPlayback 进行播放(可以实现在调用播放之前使用聊天等功能)
- (void)preLoadVideoFinish:(VHallMoviePlayer *)moviePlayer
               activeState:(VHMovieActiveState)activeState
                     error:(NSError*)error;
方法返回参数
参数名称备注
activeState活动状态
error非空即预加载成功

播放连接成功回调#

方法 API
前提需使用方法"startPlay/startPlayback",收到此回调后,可以使用聊天、签到、问答、抽奖等功能
- (void)connectSucceed:(VHallMoviePlayer *)moviePlayer
                  info:(NSDictionary *)info;
方法返回参数
参数名称备注
info相关信息

缓冲开始回调#

方法 API
- (void)bufferStart:(VHallMoviePlayer *)moviePlayer
               info:(NSDictionary *)info;
方法返回参数
参数名称备注
info相关信息

缓冲结束回调#

方法 API
- (void)bufferStop:(VHallMoviePlayer *)moviePlayer
              info:(NSDictionary *)info;
方法返回参数
参数名称备注
info相关信息

下载速率的回调#

方法 API
- (void)downloadSpeed:(VHallMoviePlayer *)moviePlayer
                 info:(NSDictionary *)info;
方法返回参数
参数名称备注
info相关信息

视频流类型回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
        recStreamTypeInfo:(NSDictionary *)info;
方法返回参数
参数名称备注
info相关信息

播放时错误的回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
          playError:(VHSaasLivePlayErrorType)livePlayErrorType
               info:(NSDictionary *)info;
方法返回参数
参数名称备注
livePlayErrorType直播错误类型
info相关信息

livePlayErrorType 类型详情#

| 参数名称 | 备注 |
| :---------------------------: | :----------------: | --- |
| VHSaasLivePlayErrorNone | |
| VHSaasLivePlayParamError | 参数错误 |
| VHSaasLivePlayRecvError | 接受数据错误 |
| VHSaasLivePlayCDNConnectError | CDN 链接失败 |
| VHSaasVodPlayError | 点播播放器错误信息 |
| VHSaasLivePlayGetUrlError | 获取活动信息失败 |
| VHSaasPlaySSOKickout | 观看被踢出 | |

当前活动状态回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
        activeStateDidChange:(VHMovieActiveState)activeState;

activeState 类型详情#

参数名称备注
VHMovieActiveStateNone
VHMovieActiveStateLive直播
VHMovieActiveStateReservation预约
VHMovieActiveStateEnd结束
VHMovieActiveStateReplay回放 or 点播

当前视频播放模式#

方法 API
以及是否为 vr 活动回调
- (void)moviePlayer:(VHallMoviePlayer *)player
            loadVideoPlayMode:(VHMovieVideoPlayMode)playMode
                    isVrVideo:(BOOL)isVrVideo;
方法返回参数
参数名称备注
playMode视频播放模式
isVrVideo是否为 vr 活动

playMode 类型详情#

参数名称备注
VHMovieVideoPlayModeNone不存在
VHMovieVideoPlayModeMedia单视频
VHMovieVideoPlayModeTextAndVoice文档+声音
VHMovieVideoPlayModeTextAndMedia文档+视频
VHMovieVideoPlayModeVoice单音频

当前视频支持的播放模式列表回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)player
            loadVideoPlayModeList:(NSArray *)playModeList;
方法返回参数
参数名称备注
playModeListVHMovieVideoPlayMode 播放模式组合,如@[@(VHMovieVideoPlayModeMedia),@(VHMovieVideoPlayModeVoice)]

当前视频支持的清晰度列表回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)player
            loadVideoDefinitionList:(NSArray *)definitionList;
方法返回参数
参数名称备注
definitionListVHDefinition 清晰度组合,如@[@(VHDefinitionOrigin),@(VHDefinitionUHD),@(VHDefinitionHD)]

播放器状态回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            statusDidChange:(VHPlayerState)state;
方法返回参数
参数名称备注
state播放器状态

state 类型详情#

参数名称备注
VHPlayerStateStoped停止 可调用 startPlay: startPlayback: 状态转为 VHallPlayerStateStarting
VHPlayerStateStarting启动中
VHPlayerStatePlaying播放中 可调用 stopPlay pausePlay 状态转为 VHallPlayerStateStoped/VHallPlayerStatePaused
VHPlayerStateStreamStoped直播流停止 暂停 pausePlay/流连接错误触发 可调用 stopPlay reconnectPlay 状态转为 VHallPlayerStateStoped/VHallPlayerStatePlaying
VHPlayerStatePause回放暂停状态
VHPlayerStateComplete回放播放完成

视频宽高回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
          videoSize:(CGSize)size;
方法返回参数
参数名称备注
size视频尺寸

当前播放时间回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
        currentTime:(NSTimeInterval)currentTime;
方法返回参数
参数名称备注
currentTime当前播放时间点 1s 回调一次,可用于 UI 刷新

返回视频打点数据(若存在打点信息)#

- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
      videoPointArr:(NSArray <VHVidoePointModel *> *)pointArr;
方法返回参数
参数名称备注
pointArr已打点的数据

VHVidoePointModel 视频打点数据模型#

参数名称备注
timePoint打点位置的时间,单位:秒
msg打点位置的文字描述
picurl打点位置的图片 url 地址
videoDuration视频总时长,单位:秒
pointPersent打点位置时间占视频总时长的百分比,如:0.35

被踢出#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            isKickout:(BOOL)isKickout;
方法返回参数
参数名称备注
isKickout被踢出 (取消踢出后需要重新进入)

当前是否支持投屏功能#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            isCast_screen:(BOOL)isCast_screen;
方法返回参数
参数名称备注
isCast_screen1 支持 0 不支持

主持人显示/隐藏文档#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            isHaveDocument:(BOOL)isHave
            isShowDocument:(BOOL)isShow;
方法返回参数
参数名称备注
isHaveYES 此活动有文档演示
isShowYES 主持人显示观看端文档,NO 主持人隐藏观看端文档

直播文档同步#

方法 API
直播文档有延迟,指定需要延迟的秒数 (默认为直播缓冲时间,即:realityBufferTime/1000.0)
- (NSTimeInterval)documentDelayTime:(VHallMoviePlayer *)moviePlayer;

发布公告的回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            announcementContentDidChange:(NSString*)content
                             publishTime:(NSString*)time;
方法返回参数
参数名称备注
content公告内容
time发布时间

当前是否开启问答功能#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            isQuestion_status:(BOOL)isQuestion_status
                question_name:(NSString *)questionName;
方法返回参数
参数名称备注
isQuestion_status1 开启 0 关闭

当前是否开启文件下载功能#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer is_file_download:(BOOL)is_file_download file_download_menu:(VHallPlayMenuModel *)file_download_menu;
方法返回参数
参数名称备注
is_file_download是否开启 1 开启 0 关闭
file_download_menu文件下载菜单详情
questionNamev6.4 新增问答名称
修改于 2025-05-27 11:59:31
上一页
虚拟人数
下一页
跑马灯
Built with