HarmonyOS鸿蒙Next中如何解决Video组件播放前出现预览黑屏的问题

HarmonyOS鸿蒙Next中如何解决Video组件播放前出现预览黑屏的问题

【问题现象】

Video组件在未播放视频内容之前是黑色的,开始播放后,再点击暂停,才可以正常展示暂停时的视频内容。

问题现象效果如图:

点击放大

【定位思路】

VideoOptions对象说明

VideoOptions的previewUri属性(即视频未播放时的预览图片路径),默认不显示图片。如果不指定预览图片,则会出现开始播放前,黑屏的现象。

针对这个问题,可以考虑以下两种方案:

  • 给视频设置一个展示图片。
  • 把视频设置成自动播放,再使用settimeout设置延迟跳过黑屏阶段。

【解决方案】

根据定位思路可以知道,问题现象的根因在于没有手动为视频设置预览图片,因此可以参考以下代码进行修复:

1. 方案一给视频设置一个海报

代码示例如下:

Video({
  src: $r('app.media.videoTest'),
  previewUri: $r('app.media.mihayo'),
  controller: this.controller
})

2. 方案二自动播放,跳过黑屏阶段

部分场景,如上下滑动刷新不同视频,且要求视频自动播放的时候,可以考虑使用这个方案。

代码示例如下:

Video({
  src: $r('app.media.videoTest'),
  controller: this.controller
})
  .visibility(this.isVisibile)
  .autoPlay(true) // 设置自动播放
  .loop(true)
  .controls(true)
  .width('100%')
  .height('200vp')
  .onStart(() => {
    setTimeout(()=>{ // 使用settimeout设置延迟跳过黑屏阶段
      this.controller.setCurrentTime(1,SeekMode.PreviousKeyframe)
      this.isVisibile=Visibility.Visible
    },150)
  })

采用方案一修改后效果的如下图,能够在视频播放前显示预览图片,建议将视频的第一帧作为预览图片。

点击放大


更多关于HarmonyOS鸿蒙Next中如何解决Video组件播放前出现预览黑屏的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中如何解决Video组件播放前出现预览黑屏的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Video组件播放前出现预览黑屏的问题

在HarmonyOS鸿蒙Next中,Video组件播放前出现预览黑屏的问题,通常与视频资源的加载和渲染机制有关。以下是一些可能的解决方案:

  1. 预加载视频资源:在Video组件显示之前,提前加载视频资源,确保视频数据已经准备好。可以通过设置preload属性为autometadata来实现。

  2. 设置占位图:在视频加载完成之前,显示一张占位图,避免黑屏现象。可以通过poster属性指定占位图的URL。

  3. 优化视频格式:确保视频格式和编码方式与鸿蒙系统兼容,避免因格式问题导致的加载延迟或失败。建议使用H.264编码的MP4格式。

  4. 检查网络状态:如果视频资源来自网络,确保网络连接稳定,避免因网络延迟导致的加载问题。可以使用onError事件监听加载错误并进行重试。

  5. 使用onPrepared事件:在onPrepared事件触发后再开始播放视频,确保视频资源已经完全加载并准备好播放。

  6. 调整Video组件的尺寸:确保Video组件的尺寸与视频分辨率匹配,避免因尺寸不匹配导致的渲染问题。

  7. 更新系统版本:确保鸿蒙系统版本为最新,以获取最新的优化和修复。

通过以上方法,可以有效减少或解决Video组件播放前出现预览黑屏的问题。

回到顶部