鸿蒙Next videocontroller 如何控制单个视频播放

在鸿蒙Next开发中,使用VideoController控制视频播放时遇到问题:当页面存在多个视频组件,如何精准控制单个视频的播放/暂停?目前直接操作controller会影响所有绑定同控制器的视频实例,能否通过指定ID或实例引用来实现独立控制?求具体代码示例或解决方案。

2 回复

鸿蒙Next里用VideoController控制单个视频播放?简单!先new一个VideoController,绑定到Video组件。然后调用controller.play()开始播放,pause()暂停,stop()停止。就像遥控器控制电视一样简单!记得在aboutToDispose里释放资源哦~

更多关于鸿蒙Next videocontroller 如何控制单个视频播放的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,可以通过VideoController来控制单个视频播放。以下是关键步骤和示例代码:

1. 创建VideoController

import { VideoController } from '@ohos.multimedia.media';

// 创建控制器
let videoController: VideoController = new VideoController();

2. 设置视频源

// 设置本地视频路径
videoController.src = 'file:///data/storage/el2/base/haps/video.mp4';

// 或设置网络视频
// videoController.src = 'https://example.com/video.mp4';

3. 基础控制方法

// 开始播放
videoController.start();

// 暂停播放
videoController.pause();

// 停止播放
videoController.stop();

// 跳转到指定位置(单位:毫秒)
videoController.setCurrentTime(30000); // 跳转到30秒

// 调整音量(0.0-1.0)
videoController.setVolume(0.8);

4. 完整示例

import { VideoController } from '@ohos.multimedia.media';

@Entry
@Component
struct VideoExample {
  private videoController: VideoController = new VideoController();

  build() {
    Column() {
      // 视频组件
      Video({
        src: 'file:///data/storage/el2/base/haps/video.mp4',
        controller: this.videoController
      })
        .width('100%')
        .height(300)

      // 控制按钮
      Row({ space: 10 }) {
        Button('播放').onClick(() => {
          this.videoController.start();
        })
        Button('暂停').onClick(() => {
          this.videoController.pause();
        })
        Button('停止').onClick(() => {
          this.videoController.stop();
        })
      }.margin(10)
    }
  }
}

5. 常用监听事件

// 监听播放完成
videoController.on('ended', () => {
  console.log('视频播放完成');
});

// 监听错误事件
videoController.on('error', (error) => {
  console.error('播放错误:', error);
});

注意事项:

  • 需要申请ohos.permission.READ_MEDIA权限读取本地文件
  • 网络视频需要配置网络权限
  • 确保视频路径正确且格式受支持

这样就可以通过VideoController实现对单个视频的完整播放控制了。

回到顶部