大家好,借来下我要介绍如何在鸿蒙模拟器(手机)里播放视频。

  • 开发框架:HarmonyOS ArkTS

  • 开发工具:DevEco Studio

  • 目标平台:HarmonyOS 手机/模拟器

 最终效果展示

output.mp4     // 视频文件

注意:视频文件要放到rawfile软件文件夹里

视频可持续播放

下面是完整代码(注意在Index里写代码,因为是设备默认启动):

@Entry
@Component
struct Index {
  // 视频控制器
  private controller: VideoController = new VideoController();
  // 视频预览图(未播放时显示)
  private previewUri: Resource = $r('app.media.background')

  build() {
    Column({ space: 15 }) {

      // ========== 1. 标题 ==========
      Text('「本地视频播放器」')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
        .width('100%')

      // ========== 2. 视频播放器 ==========
      Video({
        src: $rawfile('output.mp4'),      // 视频源
        controller: this.controller,       // 控制器
        previewUri: this.previewUri        // 预览图
      })
        .muted(false)          // 不静音
        .controls(false)       // 隐藏默认控制条
        .loop(true)            // 循环播放
        .autoPlay(true)        // 自动播放
        .width('100%')         // 宽度填满
        .height(220)           // 高度 220vp

      // ========== 3. 控制按钮 ==========
      Row({ space: 20 }) {
        Button('播放')
          .width(120)
          .height(45)
          .fontSize(18)
          .onClick(() => {
            this.controller.start()  // 播放
          })

        Button('暂停')
          .width(120)
          .height(45)
          .fontSize(18)
          .onClick(() => {
            this.controller.pause()  // 暂停
          })
      }
      .width('100%')
      .justifyContent(FlexAlign.Center)  // 按钮居中

    }
    .width('100%')
    .height('100%')
    .padding(20)
    .backgroundColor('#F5F5F5')
  }
}

一些代码的讲解:

 .muted(false) // 设置是否静音

    .controls(false) // 设置是否显示默认控制条

    .loop(true) // 设置是否循环播放

    .autoPlay(false) // 设置是否自动播放

    .objectFit(ImageFit.Contain) // 设置视频填充模式

private previewUri:Resource = $r('app.media.background')---这段代码是设置视频的封面

Video({
        src: $rawfile('output.mp4'),      // 视频源
        controller: this.controller,       // 控制器
        previewUri: this.previewUri        // 预览图
      })     //output是视频文件名称,代码是视频名称和你想播放的视频的名称需要一样

如果遇到无法播放问题:

可以按照豆包给的方法,或者直接问ai(问清楚就行)

屏幕录制 2026-06-17 110908

知识点总结

1️⃣ Video 组件属性

属性 类型 说明 示例
src Resource 视频文件路径 $rawfile('output.mp4')
controller VideoController 控制视频播放 new VideoController()
autoPlay boolean 是否自动播放 true / false
loop boolean 是否循环播放 true / false
muted boolean 是否静音 true / false
controls boolean 是否显示系统控制条 true / false
previewUri Resource 视频预览图 $r('app.media.xxx')
width/height number/string 视频尺寸 '100%' / 200

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐