在鸿蒙应用开发中,视频播放是一个常见的需求。ArkUI 提供了强大的 Video 组件,支持两种主要的播放方式:本地视频播放网络视频播放。本文将详细介绍这两种方式的使用方法、常见问题及解决方案。

Video 组件概述

Video 组件是 ArkUI 中用于视频播放的核心组件,具有以下特点:

  • 支持本地视频文件播放
  • 支持网络视频流播放
  • 提供完整的播放控制(播放、暂停、进度控制等)
  • 支持预览图设置
  • 可自定义样式和尺寸

本地视频播放 2.1 基本用法 本地视频需要先将视频文件放置在项目的 rawfile 目录中,然后通过 $rawfile() 方法引用。

@Entry
@Component
struct VideoDemo {
  private controller: VideoController = new VideoController();
  private previewUri: Resource = $r('app.media.background');

  build() {
    Column() {
      Video({
        src: $rawfile('bb.mp4'),
        controller: this.controller,
        previewUri: this.previewUri
      })
        .width('100%')
        .height(200)
    }
  }
}

常见问题及解决方案

问题 1:视频格式不支持

现象:视频无法播放或报错。

原因:ArkUI Video 组件对视频格式有一定要求,某些编码格式的视频可能无法直接播放。

(修改视频属性为只读模式)

问题 2:视频时长显示为 0

现象:视频可以播放,但进度条显示时长为 0。

原因:视频编码格式不兼容,导致无法正确解析视频元数据。

网络视频播放

基本用法

网络视频播放只需提供视频的 URL 地址即可。

@Entry
@Component
export struct Index {
  private controller: VideoController = new VideoController();
  private videoSrc: string = 'http://www.w3school.com.cn/example/html5/mov_bbb.mp4';

  build() {
    Column() {
      Video({
        src: this.videoSrc,
        controller: this.controller
      })
        .width('100%')
        .height(200)
    }
  }
}

网络权限:需要在 module.json5 中配置网络权限

{
  "requestPermissions": [
    {
      "name": "ohos.permission.INTERNET"
    }
  ]
}

总结

ArkUI 的 Video 组件提供了简洁而强大的视频播放能力。本地播放适合固定素材,网络播放则更加灵活。开发时需要注意:

  1. 本地视频需放置在 rawfile 目录
  2. 遇到兼容性问题时转码后使用
  3. 网络视频需配置网络权限

如有雷同,请勿追责!!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐