本文原创发布在华为开发者社区,更多鸿蒙场景化示例请见华为开发者联盟官网“行业实践与常见问题”专题页。

介绍

本示例基于picker模块,使用PhotoViewPicker方法拉起图库选择视频文件,将视频文件传递到native侧使用Demuxer解封装器进行解封装,再使用OH_VideoDecoder进行解码(surface模式)送显播放。

基于VideoCodec实现音视频解码源码链接

效果预览

图片名称

使用说明

下载代码后,点击选择视频可以选择相册里的视频,然后点击播放进行视频的播放。

实现思路

  1. 导入picker模块,拉起图库选择视频文件保存到自定义路径。
    let photoSelectOptions = new picker.PhotoSelectOptions();
    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.VIDEO_TYPE;
    photoSelectOptions.maxSelectNumber = 1;
    let photoPicker = new picker.PhotoViewPicker();
    photoPicker.select(photoSelectOptions).then((PhotoSelectResult: picker.PhotoSelectResult) => {
      this.selectFilePath = PhotoSelectResult.photoUris[0];
    })
  1. 将文件传递到native侧进行交互。

  2. 使用Demuxer接口对文件进行解封装获取视频流数据。

  3. 使用OH_VideoDecoder接口将视频数据解码,结合Xcomponent送显播放。

    XComponent({
      id: 'xcomponent',
      type: XComponentType.SURFACE,
      libraryname: 'player'
    })
Logo

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

更多推荐