HarmonyOS 鸿蒙Next如何通过路径获取到视频信息代码示例

HarmonyOS 鸿蒙Next如何通过路径获取到视频信息代码示例 如何通过路径获取到视频信息代码示例

2 回复

参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avmetadataextractor-V5

测试文件放到rawfile下面,使用getRawFd读取。

如果是沙箱路径参考获取音视频元数据的testFetchMetadataFromDataSrc方法,获取datasrc。

import media from '@ohos.multimedia.media'

const TAG = 'MetadataDemo'

@Entry
@Component
struct PageMediaMeta {
  build() {
    Column() {
      Button("获取音频时长").onClick(async () => {
        // 创建AVMetadataExtractor对象
        let avMetadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor()
        // 设置fdSrc
        avMetadataExtractor.fdSrc = await getContext(this).resourceManager.getRawFd('喜欢你.mp3');

        // 获取元信息(callback模式)
        avMetadataExtractor.fetchMetadata((error, metadata) => {
          if (error) {
            console.error(TAG, `fetchMetadata callback failed, err = ${JSON.stringify(error)}`)
            return
          }
          console.info(TAG, `fetchMetadata callback success, duration: ${metadata.duration}`)
        })
      })

      Button("获取视频时长").onClick(async () => {
        // 创建AVMetadataExtractor对象
        let avMetadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor()
        // 设置fdSrc
        avMetadataExtractor.fdSrc = await getContext(this).resourceManager.getRawFd('videoTest.mp4');

        // 获取元信息(callback模式)
        avMetadataExtractor.fetchMetadata((error, metadata) => {
          if (error) {
            console.error(TAG, `fetchMetadata callback failed, err = ${JSON.stringify(error)}`)
            return
          }
          console.info(TAG, `fetchMetadata callback success, duration: ${metadata.duration}`)
        })
      })
    }
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next如何通过路径获取到视频信息代码示例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,通过路径获取视频信息通常需要使用鸿蒙提供的多媒体API。以下是一个简单的代码示例,展示了如何在HarmonyOS应用中使用路径获取视频信息。

首先,确保你的项目中已经包含了必要的权限,比如读取存储权限(READ_EXTERNAL_STORAGE)。

// 注意:此代码示例为伪代码,实际鸿蒙开发不使用Java,但为说明逻辑而写
import ohos.aafwk.ability.Ability;
import ohos.media.common.Uri;
import ohos.media.MetadataRetriever;

public class VideoInfoFetcher extends Ability {
    public void fetchVideoInfo(String filePath) {
        try {
            Uri videoUri = Uri.parse("file://" + filePath);
            MetadataRetriever retriever = new MetadataRetriever();
            retriever.setDataSource(this, videoUri);

            // 获取视频宽度
            String width = retriever.extractMetadata(MetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
            // 获取视频高度
            String height = retriever.extractMetadata(MetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
            // 获取视频时长(毫秒)
            String duration = retriever.extractMetadata(MetadataRetriever.METADATA_KEY_DURATION);

            // 这里可以添加更多代码来处理获取到的视频信息
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意:上述代码是基于假设的API调用方式,实际鸿蒙开发中,API调用和类名可能有所不同。你需要查阅鸿蒙系统的官方文档来获取正确的API和类名。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部