开放平台
首页平台概述
开发者
  • 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.
看直播房间和互动房间不能同时使用,进入互动需要暂停直播
2.
必需登录成功之后才可以进入活动
3.
用视频模式观看无延迟直播也会有视频延迟
4.
观看互动直播才有连麦功能
5.
在直播和互动切换的场景中,互动需要调用销毁且对持有的对象置位 nil,然后在重新播放直播

关键步骤#

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

基础属性#

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

播放器关键方法#

方法方法描述
initWithDelegate初始化
preLoadRoomWithParam预加载房间信息
startPlay开始播放
startPlay:isPIP:开始播放并配置画中画
pausePlay暂停播放
reconnectPlay恢复播放
stopPlay停止播放
setMute设置静音
destroyMoivePlayer销毁播放器

连麦互动方法#

方法方法描述
microApplyWithType申请上麦/取消申请
replyInvitationWithType是否同意上麦

辅助方法#

方法方法描述
cleanLastFrame清空视频剩余的最后一帧画面
dlnaMappingObject设置投屏对象
reconnectSocket重连 socket
playerBackgroundColorplayerBackgroundColor
playerBackgroundImage设置播放器背景图片
audioOutput设置音频输出设备
openPIPSupported开启画中画
closePIPSupported关闭画中画
setIsOpenPIP是否开启画中画

VHallMoviePlayerDelegate 代理方法#

方法方法描述
preLoadVideoFinish视频信息预加载完成回调
connectSucceed播放连接成功回调
liveDidStart直播开始消息
liveDidStoped直播结束消息
bufferStart缓冲开始回调
bufferStop缓冲结束回调
downloadSpeed下载速率的回调
recStreamtype视频流类型回调
playError播放时错误的回调
activeStateDidChange当前活动状态回调
loadVideoPlayMode当前视频播放模式,以及是否为 vr 活动回调
loadVideoPlayModeList当前视频支持的播放模式列表回调
loadVideoDefinitionList当前视频支持的清晰度列表回调
statusDidChange播放器状态回调
videoSize视频宽髙回调(支持直播与点播)
isInteractiveActivity当前活动是否允许举手申请上麦回调
microInvitationWithAttributes主持人是否同意上麦申请回调
microInvitation被主持人邀请上麦
isKickout被踢出
isCast_screen当前是否支持投屏功能
isHaveDocument主持人显示/隐藏文档
documentDelayTime直播文档同步,直播文档有延迟,指定需要延迟的秒数
announcementContentDidChange发布公告的回调
isQuestion_status当前是否开启问答功能
is_file_download当前是否开启文件下载功能
pictureInPictureControllerWillStart即将开启画中画
pictureInPictureControllerDidStart已经开启画中画
pictureInPictureWithFailedToStartPictureInPictureWithError开启画中画失败
pictureInPictureControllerWillStop即将关闭画中画
pictureInPictureControllerDidStop已经关闭画中画
pictureInPictureWithRestoreUserInterfaceForPictureInPictureStopWithCompletionHandler关闭画中画且恢复播放界面

初始化#

方法 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[@"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)startPlay:(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 startPlay:param];

开始播放并配置画中画#

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

暂停播放#

方法 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
- (BOOL)microApplyWithType:(NSInteger)type finish:(void(^)(NSError *error))finishBlock;
方法入参
参数名称是否必须示例备注
type是11 申请上麦,0 取消申请上麦
finishBlock是回调消息发送结果,error 为失败详情
方法示例
[self.moviePlayer microApplyWithType:1 finish:^(NSError *error) {
    if(error){
        NSLog(@"%@",error.description);
    }else{
        NSLog(@"申请上麦成功");
    }
}];

是否同意上麦#

方法 API
- (BOOL)replyInvitationWithType:(NSInteger)type finish:(void(^)(NSError *error))finishBlock;
方法入参
参数名称是否必须示例备注
type是11 接受,2 拒绝,3 超时失败
finishBlock是回调消息发送结果,error 为失败详情
方法示例
[self.moviePlayer replyInvitationWithType:1 finish:^(NSError *error) {
    if(error){
        NSLog(@"%@",error.description);
    }else{
        NSLog(@"申请上麦成功");
    }
}];

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

方法 API
清空视频剩余的最后一帧画面
- (void)cleanLastFrame;
方法示例
[self.moviePlayer cleanLastFrame]

设置投屏对象#

投屏功能使用步骤: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
- (BOOL)openPIPSupported;
方法示例
[self.moviePlayer openPIPSupported];

关闭画中画#

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

是否开启画中画#

方法 API
- (void)setIsOpenPIP:(BOOL)isOpenPIP;
方法示例
[self.moviePlayer setIsOpenPIP: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)liveDidStart:(VHallMoviePlayer *)moviePlayer;

直播结束消息#

方法 API
- (void)liveDidStoped:(VHallMoviePlayer *)moviePlayer;

缓冲开始回调#

方法 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
            isInteractiveActivity:(BOOL)isInteractive
            interactivePermission:(VHInteractiveState)state;
方法返回参数
参数名称备注
isInteractive当前活动是否支持互动功能
state主持人是否允许举手

主持人是否同意上麦申请回调#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            microInvitationWithAttributes:(NSDictionary *)attributes
                                    error:(NSError *)error;
方法返回参数
参数名称备注
attributes收到的数据
errornil:同意上麦 非 nil:不同意上麦

被主持人邀请上麦#

方法 API
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer
            microInvitation:(NSDictionary *)attributes;
方法返回参数
参数名称备注
attributes收到的数据

被踢出#

方法 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 关闭
questionNamev6.4 新增问答名称

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

方法 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文件下载菜单详情

即将开启画中画#

方法 API
- (void)pictureInPictureControllerWillStart;

已经开启画中画#

方法 API
- (void)pictureInPictureControllerDidStart;

开启画中画失败#

方法 API
- (void)pictureInPictureWithFailedToStartPictureInPictureWithError:(NSError *)error;

即将关闭画中画#

方法 API
- (void)pictureInPictureControllerWillStop;

已经关闭画中画#

方法 API
- (void)pictureInPictureControllerDidStop;

关闭画中画且恢复播放界面#

方法 API
- (void)pictureInPictureWithRestoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
修改于 2025-05-27 11:59:31
上一页
发起视频直播
下一页
观众互动
Built with