开放平台
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
  1. Harmony SDK
  • DEMO示例
  • JS SDK
    • web 点播 sdk
      • 更新记录
      • 点播上传SDK
    • web 观播 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
  • Harmony SDK
    • 整体介绍
    • 快速接入
    • SDK初始化
    • 登录&登出
    • 活动基础信息
    • 观看协议
    • 观看权限校验&预约
    • 开屏海报
    • 暖场视频
    • 观看直播
    • 观看回放/点播
    • 聊天
    • 房间消息
    • 在线人数&热度
    • 文档/白板
    • 版本更新
    • 私聊
    • 播放器错误码
    • 互动工具
      • 互动-问答
      • 互动-问卷
      • 互动-公告
      • 互动-抽奖
      • 互动-签到
      • 互动-计时器
      • 互动-礼物
      • 互动-互动有礼
      • 互动-快问快答
      • 互动-口令红包
      • 互动-推屏卡片
      • 互动-商品
      • 互动-优惠卷
      • 互动-观看有礼
      • 互动-点赞
    • 防录屏
      • 播放器水印&跑马灯
    • 菜单
      • 自定义菜单
      • 文件下载
      • 概要总结
      • 回放列表
      • 邀请卡
  • 微信小程序 SDK
  • 相关协议
    • 微吼直播 SDK 隐私政策
    • 微吼直播 SDK 开发者使用规范
  1. Harmony SDK

观看直播

观看视频直播#

视频直播活动中,观众可以通过 SDK 进入直播间观看视频直播,在直播间中进行聊天互动的基础动作。

注意事项#

1.
必需登录成功之后才可以进入活动
2.
初始化直播播放器需要判断活动类型是否为直播活动,需要区分于回放/点播活动

观看直播步骤#

1.
实例化播放器控制器 - VHWatchLivePlayer
2.
构造直播播放器组件 - VHWatchLivePlayerView
3.
初始化房间信息 - VHWatchLivePlayer.initWebinarInfo (只设置一次)
4.
设置播放器回调事件监听 - VHWatchLivePlayerCallback (监听onPlayerViewInitCompleted后进行播放)
5.
开始播放 - VHWatchLivePlayer.startPlay
6.
暂停播放 - VHWatchLivePlayer.pausePlay
7.
恢复播放 - VHWatchLivePlayer.resumePlay
8.
销毁播放器 - VHWatchLivePlayer.destroyPlayer (退出房间必须调用,只设置一次)

核心类#

类名描述
VHWatchLivePlayer播放器控制核心类
VHWatchLivePlayerView播放器核心组件
VHWatchLivePlayerCallback播放器事件回调

关键方法#

方法方法描述
VHWatchLivePlayer.initWebinarInfo初始化直播间信息
VHWatchLivePlayer.setLivePlayerListener设置播放器回调事件监听
VHWatchLivePlayer.startPlay开始播放
VHWatchLivePlayer.stopPlay停止播放
VHWatchLivePlayer.pausePlay暂停播放
VHWatchLivePlayer.resumePlay恢复播放
VHWatchLivePlayer.changeDefinition切换清晰度
VHWatchLivePlayer.setPlayerVolume设置播放音量
VHWatchLivePlayer.setPlayerScalingMode设置播放器视频画面填充模式
VHWatchLivePlayer.destroyPlayer销毁播放器
VHWatchLivePlayer.initCastPlay初始化投屏能力
VHWatchLivePlayer.startCastingPlay开始投屏
VHWatchLivePlayer.stopCastingPlay结束投屏
VHWatchLivePlayer.initPipController初始化画中画
VHWatchLivePlayer.startPiP开启画中画
VHWatchLivePlayer.updatePipControlStatus更新画中画播放按键状态
VHWatchLivePlayer.stopPiP结束画中画
VHWatchLivePlayerCallback播放器事件回调

实例化播放器控制器#

类构造
代码示例

import { VHWatchLivePlayer} from "@vhall/vhall_live";

@Component
export struct VHWatchLivePlayerComponent {
  @State message: string = 'Hello World';
  /**
   * 播放器控制类
   * */
  public livePlayer?:VHWatchLivePlayer = new VHWatchLivePlayer(this.getUIContext().getHostContext() as Context);
  
 ......
  }

构造直播播放器组件#

组件构造
代码示例
  build() {
    Stack({ alignContent: Alignment.Center }){
      // 播放器容器. 设置回调监听,播放器实例,播放器水印配置信息
      VHWatchLivePlayerView({ componentListener: this, livePlayer: this.livePlayer,is_expand:this.is_expand, enableDefaultWaterMask:true,water:this.playerConfig?.water!})
        .width('100%')
        .height('100%')
        .expandSafeArea(this.is_expand ? this.expandTypes : [], this.is_expand ? this.expandEdges : [])
        .backgroundColor(Color.Black)
        .align(Alignment.Center)
        .zIndex(playerZIndex.indexOf(PLAYER_INDEX))
      ....
  }

初始化直播间信息#

接口 API
  public initWebinarInfo(webinarsInfo: VHWebinarData)
接口入参
参数名称是否必须示例备注
webinarsInfo是xx活动信息
代码示例
   aboutToAppear(): void {
    this.livePlayer?.initWebinarInfo(this.webinars!);
  }

设置播放器回调事件监听#

接口 API
 public setLivePlayerListener(listener: VHWatchLivePlayerCallback) 
代码示例
   aboutToAppear(): void {
    this.livePlayer?.initWebinarInfo(this.webinars!);
    this.livePlayer?.setLivePlayerListener(this);
  }

开始播放#

接口 API
  public startPlay(def: VHPlayDefinition) 
接口入参
参数名称是否必须示例备注
def是xxVHPlayDefinition 清晰度
代码示例
//底层播放器初始化成功后才能进行播放,需要监听onPlayerViewInitCompleted回调
  onPlayerViewInitCompleted(){
    this.livePlayer?.startPlay(this.playerConfig?.default_definition!);
    this.isPlayError = true;
  }

停止播放#

接口 API
  public stopPlay() 
代码示例
    this.livePlayer?.stopPlay();

暂停播放#

接口 API
  public pausePlay() 
代码示例
//控制暂停和恢复
if(this.is_playing){
  this.livePlayer?.pausePlay();
  this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PAUSE);
}else{
  this.livePlayer?.resumePlay();
  this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PLAY);
}

恢复播放#

接口 API
  public resumePlay() 
代码示例
//控制暂停和恢复
if(this.is_playing){
  this.livePlayer?.pausePlay();
  this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PAUSE);
}else{
  this.livePlayer?.resumePlay();
  this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PLAY);
}

切换清晰度#

接口 API
 public changeDefinition(def: VHPlayDefinition)
接口入参
参数名称是否必须示例备注
def是xxVHPlayDefinition 清晰度
代码示例
//根据选择的清晰度进行播放
builder:definitionsPopup({onItemSelected: (item: popItemValueObj) => {
    if (this.is_start) {
      this.isLoading = true;
      this.livePlayer?.changeDefinition(item.value as VHPlayDefinition)
      this.isPlayError = true;
    }
    this.playDefinition = item.text;
    this.isDefinition = false;
  }},this.playDefinitionList),

设置播放音量#

接口 API
 public setPlayerVolume(vol: number): number
接口入参
参数名称是否必须示例备注
vol是xx范围:0.01 ~ 1.0
代码示例
//根据选择的清晰度进行播放
.onActionUpdate((event: GestureEvent | undefined) => {
  if (event && event.fingerList && event.fingerList[0]) {
    const touchY = event.fingerList[0].localY;
    const deltaY = touchY - touchStartY;
    // 移动距离占播放器高度的比例(deltaY取反是因为值的正负与滑动方向相反)
    const percent = (-deltaY / changeHeight);
    const width = changeWidth as number;
    if (touchStartX <= (width / 2)) {

    } else {
      let v = this.playerVol - (event.offsetY)/3/10;
      let newVol = this.playerVol + percent;
      // 严格限制在0-100范围内
      newVol = Math.max(0, Math.min(100, v));
      this.playerVol = newVol;
      this.isShowVol = true;
      this.livePlayer?.setPlayerVolume(newVol/100);//设置音量
    }
    touchStartY = touchY;
  }
})

设置播放器视频画面填充模式#

接口 API
  public setPlayerScalingMode(mode: VHPlayerVideoScalingMode)
接口 参数
参数名称是否必须示例备注
mode是xxVHPlayerVideoScalingMode 图像拉伸,等比例缩放,平铺

视频画面缩放类型#

VHPlayerVideoScalingMode类型备注
VH_FILLnumber将图像拉伸填充
VH_ASPECT_FITnumber将图像等比例缩放,适配最长边,居中显示,可能会留有黑边
VH_ASPECT_FILLnumber将图像等比例铺满整个屏幕,多余部分裁剪掉
代码示例
//根据选择的清晰度进行播放
aboutToAppear(): void {
    this.livePlayer?.initWebinarInfo(this.webinars!);
    if(this.playerConfig?.basic?.picture_in_picture == 1){
      this.livePlayer?.initPipController(true);
    }
    this.livePlayer?.setLivePlayerListener(this);
    this.livePlayer?.setPlayerScalingMode(VHPlayerVideoScalingMode.VH_ASPECT_FILL);
    }

销毁播放器#

接口 API
 public destroyPlayer()
代码示例
  aboutToDisappear(): void {
    this.barrageController.pause();
    this.barrageController.clearInScreen();
    this.livePlayer?.destroyPlayer();
  }

投屏#

初始化投屏能力#

接口 API
  public initCastPlay(source: VHCastMediaSource) 
接口 参数
参数名称是否必须示例备注
source是xxVHCastMediaSource
代码示例
aboutToAppear(): void {
    this.livePlayer?.initWebinarInfo(this.webinars!);
    this.livePlayer?.setLivePlayerListener(this);
    this.livePlayer?.setPlayerScalingMode(VHPlayerVideoScalingMode.VH_ASPECT_FILL);
   
    this.source = {
      title:this.webinars?.webinar?.subject!,
      name:'微吼SaaS',
      description:this.webinars?.webinar?.subject!,
      headImage:"https://cnstatic01.e.vhall.com/.....c1651.jpg"
    };
    //初始化投屏后,会创建媒体会话绑定播控服务。如果不使用投屏功能不要进行初始化。
    this.livePlayer?.initCastPlay(this.source);
  });

开始投屏#

接口 API
  public startCastingPlay() 
代码示例
使用投播控件自动实现投屏

结束投屏#

接口 API
  public stopCastingPlay() 
代码示例
  .onClick(() => {
    this.livePlayer?.stopCastingPlay();
    this.isCasting = false;
  })

画中画#

初始化画中画#

接口 API
 public initPipController(autoStart:boolean,navId?:string)
接口入参
参数名称是否必须示例备注
autoStart是xxboolean 退到后台是否自动开启画中画
navId否xx1、UIAbility使用Navigation管理页面,需要设置Navigation控件的id属性,并将该id设置给画中画控制器,确保还原场景下能够从画中画窗口恢复到原页面; 2、UIAbility使用Router管理页面时(画中画场景不推荐该导航方式),无需设置navigationId。注意:该场景下启动画中画后,不要进行页面切换,否则还原场景可能出现异常; 3、UIAbility只有单页面时,无需设置navigationId,还原场景下也能够从画中画窗口恢复到原页面
代码示例
  aboutToAppear(): void {
   //如果活动配置支持了画中画则进行配置
   this.livePlayer?.initWebinarInfo(this.webinars!);
    if(this.playerConfig?.basic?.picture_in_picture == 1){
      this.livePlayer?.initPipController(true);
    }
  }

开启画中画#

接口 API
 public startPiP()
代码示例
  this.livePlayer?.startPiP();

更新画中画播放按键状态#

接口 API
  public updatePipControlStatus(status: VHPipControlPanelStatus)
接口 参数
参数名称是否必须示例备注
status是xxVHPipControlPanelStatus
代码示例
 if(this.is_playing){
    this.livePlayer?.pausePlay();
     this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PAUSE);
}else{
   this.livePlayer?.resumePlay();
   this.livePlayer?.updatePipControlStatus(VHPipControlPanelStatus.VH_CONTROL_PLAY);
}

结束画中画#

接口 API
 public stopPiP()
代码示例
  this.livePlayer?.stopPiP();

播放器事件回调#

接口 API
代码示例
  onPlayerViewInitCompleted(){
    this.livePlayer?.startPlay(this.playerConfig?.default_definition!);
    this.isPlayError = true;
  }

  /**
   * 播放器播放失败事件
   */
  onPlayerError(error: VHErrorInfo) {
    if(error.code == VHConstants.VH_PLAY_CURRENT_DEF_FAILED){
      //没有可用的清晰度,重新进行播放。
      this.livePlayer?.startPlay(this.playerConfig?.default_definition!);
    }else if(error.code == VHConstants.VH_PLAY_STREAM_FAILED || error.code ==  VHConstants.PLAY_FORMAT_ERROR  ||
      error.code ==  VHConstants.VH_NETWORK_ERROR || error.code == VHConstants.VH_CAN_NOT_FIND_HOST || error.code == VHConstants.VH_PLAY_TIMEOUT){
      this.livePlayer?.pausePlay();
      this.is_playing = false;
      this.isPlayError = true;//监听到播放异常时,为了点击播放按键时使用startPlay重新进行拉流
    }
    this.getUIContext().getPromptAction().showToast({
      message: error.code + error.message,
      duration: 4000,
      showMode: promptAction.ToastShowMode.DEFAULT,
      bottom: 80
    });
  }
  /**
   * 观看状态回调
   * @param player  播放器实例
   * @param state   状态类型 详见 VHPlayerStatus 的定义.
   */
  onStatusDidChange(state: VHPlayerState){
    if(state == VHPlayerState.VH_PLAYER_PLAYING){
      this.is_start = true;
      this.is_playing = true;
      this.isLoading = false;
      this.isPlayError = false;
    }else if(state == VHPlayerState.VH_PLAYER_PAUSE || state == VHPlayerState.VH_PLAYER_STOP || state == VHPlayerState.VH_PLAYER_RELEASE){
      this.is_playing = false;
    }
    if(state == VHPlayerState.VH_PLAYER_PREPARED){
      this.isLoading = true;
    }else if(state == VHPlayerState.VH_PLAYER_BUFFERING_END){
      this.isLoading = false;
    }
    this.playerState = state;
  }
  /**
   * 画中画状态
   * @param state: 画中画播放状态
   */
  onPipStatusChange(state: VHPlayerPipState){

  }

  /**
   * 画中画控制中心播放状态
   * @param state: VHPlayerPipControlPanelStatus
   */
  onPipControlPanelStatusChange(state: VHPipControlPanelStatus){
    if(state == VHPipControlPanelStatus.VH_CONTROL_PAUSE){
      this.livePlayer?.pausePlay();
    }else{
      this.livePlayer?.resumePlay();
    }
  }

  /**
   * 播放器音量
   * @param volume :当前播放器音量值
   */
  onPlayerVolume(volume: number){
  }

  /**
   * 当前房间支持的清晰度列表
   * @param definitions   支持的清晰度列表
   */
  onValidDefinitions(definitions: VHPlayDefinition[]){
    let hasDef:boolean = false;
    this.definitions_list = [];
    this.playDefinitionList = [];
    definitions.forEach((item)=>{
      //是否隐藏原画
      if(item == VHPlayDefinition.VH_ORIGIN && this.configList.live_hidden_same == 1){
        return;
      }
      this.definitions_list.push(item);
      if(this.playerConfig?.default_definition == item){
        hasDef = true;
      }
      this.resetPlayDef(item);
    })
    if(!hasDef && this.playerConfig && definitions.length > 0){
      definitions.forEach((item)=>{
        //如果没有默认清晰度,则重新选择一个清晰度
        if(item != VHPlayDefinition.VH_AUDIO && this.playerConfig){
          this.resetPlayDef(item);
          this.playerConfig.default_definition = item as VHPlayDefinition;
          return;
        }
      })
    }
  }
  /**
   * 视频流播放成功后,回调视频流的宽髙。用户可根据视频流实际宽高,调整播放容器大小。
   * @param width   视频帧宽度
   * @param height  视频帧高度
   */
  onVideoFrameSize(width: number, height: number){

  }
  /**
   * 投屏设备状体事件回调。
   * @param state. 0 设备已准备好可以播放。1:设备已断开
   */
  onCastPlayDeviceState(state: number){
    this.isCasting = state == 0? true :false;
  }
  /**
   * 已连接的投屏设备。
   * @param state. 0 设备已准备好可以播放。1:设备已断开
   */
  onCastPlayDeviceConnected(device: VHCastPickerDevice){
    this.castPickDevice = device.deviceName;
  }
  /**
   * 投屏事件回调。
   * @param state:VHCastPlayState
   */
  onCastPlayState(state: VHCastPickerState){
    if(state == VHCastPickerState.VH_CAST_PICKER_STATE_PLAY){
      this.is_start = true;
      this.is_playing = true;
    }else if(state == VHCastPickerState.VH_CAST_PICKER_STATE_PAUSE || state == VHCastPickerState.VH_CAST_PICKER_STATE_STOP){
      this.is_playing = false;
    }
  }
  /**
   * 投屏播放时长。
   * @param duration:number  播放总时长 ,单位ms
   */
  onCastPlayDuration(duration: number){

  }
  /**
   * 投屏播放当前位置。
   * @param position:number  播放当前进度 ,单位ms
   */
  onCastPlayPosition(position: number){

  }
  /**
   * 投屏操作失败。
   * @param state:VHCastPlayState。执行相关操作失败。包括开播、暂停、设置进度
   */
  onCastPlayError(state: VHCastPickerState){
    this.getUIContext().getPromptAction().showToast({
      message: '投屏异常' + state.toString(),
      duration: 4000,
      showMode: promptAction.ToastShowMode.DEFAULT,
      bottom: 80
    });
  }

播放器数据结构#

播放器播放过程中状态信息举#
VHPlayerState类型备注
VH_PLAYER_INITnumber默认初始化
VH_PLAYER_PREPAREDnumber播放器预加载
VH_PLAYER_LOADINGnumber加载中
VH_PLAYER_PLAYINGnumber播放中
VH_PLAYER_PAUSEnumber已暂停
VH_PLAYER_STOPnumber已停止
VH_PLAYER_COMPLETEnumber播放已完成
VH_PLAYER_RELEASEnumber播放器已释放
VH_PLAYER_BUFFERING_ENDnumber视频数据加载完成
画中画状态#
VHPlayerPipState类型备注
VH_PIP_STARTnumber画中画开始
VH_PIP_STOPnumber画中画停止
VH_PIP_ERRORnumber画中画异常
VH_PIP_RESTOREnumber画中画点击小窗恢复
VH_PIP_CONTROL_PAUSEnumber画中画点击小窗暂停
VH_PIP_CONTROL_RESUMEnumber画中画点击小窗恢复播放
画中画点击小窗控制中心播放按键状态#
VHPlayerPipControlPanelStatus类型备注
CONTROL_PAUSEnumber画中画点击小窗暂停
CONTROL_PLAYnumber画中画点击小窗恢复播放
投屏状态#
VHCastPickerState类型备注
VH_CAST_PICKER_STATE_NO_CAST_PLAYnumber无投屏
VH_CAST_PICKER_STATE_INITIALnumber初始化投屏中
VH_CAST_PICKER_STATE_PREPAREnumber投屏视频准备中
VH_CAST_PICKER_STATE_PLAYnumber投屏播放
VH_CAST_PICKER_STATE_PAUSEnumber投屏暂停
VH_CAST_PICKER_STATE_STOPnumber投屏停止
投屏设备#
VHCastPickerDevice类型备注
deviceNamestring设备名称
deviceIdstring设备ID
设置画中画小窗控制中心播放按键状态回调#
VHPipControlPanelStatus类型备注
VH_CONTROL_PAUSEnumber画中画暂停
VH_CONTROL_PLAYnumber画中画恢复播放
视频清晰度VHPlayDefinition#
清晰度枚举值
VHPlayDefinition值描述
VH_ORIGIN0原画
VH_UHD1高清720p
VH_HD2标清480p
VH_SD3流畅360p
VH_AUDIO4纯音频
VH_FULL_HD6超清1080p
投屏相关参数#
用于投屏时设置icon信息
VHCastMediaSource值描述
namestring标题名字
titlestring标题内容
descriptionstring描述
headImagestring显示头像
修改于 2025-11-19 08:22:07
上一页
暖场视频
下一页
观看回放/点播
Built with