HarmonyOS 鸿蒙Next如何获取沙箱目录下视频的宽高信息?

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何获取沙箱目录下视频的宽高信息?

如何获取沙箱目录下视频的宽高信息?

2 回复

参考demo:

import { media } from '[@kit](/user/kit).MediaKit';
import { image } from '[@kit](/user/kit).ImageKit';
import { fileIo } from '[@kit](/user/kit).CoreFileKit';

let context = getContext(this)
let filesDir = context.filesDir
let filePath = filesDir + "/" + "videoTest.mp4"

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) message: string = 'Hello World'
 [@State](/user/State) pixelMap: image.PixelMap | undefined = undefined;

 build() {
   Row() {
     Column() {
       Text('把视频保存到沙箱路径').fontSize(50).fontWeight(FontWeight.Bold).onClick(() => {
         context.resourceManager.getRawFile("videoTest.mp4", (err, value) => {
           let file = fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
           console.log(`${value.buffer.byteLength}`)
           fileIo.writeSync(file.fd, value.buffer)
           fileIo.closeSync(file.fd)
         })
       })
       Button('测量视频宽高')
         .type(ButtonType.Capsule)
         .margin({ top: 20 })
         .backgroundColor('#0D9FFB')
         .width('60%')
         .height('5%')
         .onClick(async () => {
           let avMetadataExtractor = await media.createAVMetadataExtractor()
           avMetadataExtractor.fdSrc = fileIo.openSync(getContext().filesDir + '/videoTest.mp4');
           let metadata = await avMetadataExtractor.fetchMetadata()
           console.log(metadata.videoWidth + '')
         })
       Image(this.pixelMap)
         .width(300)
         .height(300)
         .margin({ top: 20 })
     }
     .width('100%')
   }
   .height('100%')
 }
}

在HarmonyOS鸿蒙Next中,获取沙箱目录下视频的宽高信息,可以通过以下步骤实现:

首先,确保视频文件已经保存在沙箱目录下。然后,使用@kit.MediaKit中的AVMetadataExtractor类来获取视频的元数据,包括视频的宽高信息。

具体代码实现如下:

import { media } from '@kit.MediaKit';
import { fileIo } from '@kit.CoreFileKit';

let context = getContext(this);
let filesDir = context.filesDir;
let filePath = filesDir + "/" + "yourVideoFile.mp4"; // 替换为你的视频文件名

// 创建AVMetadataExtractor实例
let avMetadataExtractor = await media.createAVMetadataExtractor();
avMetadataExtractor.fdSrc = fileIo.openSync(filePath, fileIo.OpenMode.READ_ONLY);

// 获取视频元数据
let metadata = await avMetadataExtractor.fetchMetadata();

// 输出视频宽高
console.log("视频宽度: " + metadata.videoWidth);
console.log("视频高度: " + metadata.videoHeight);

注意,上述代码中的yourVideoFile.mp4需要替换为你实际的视频文件名。

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

回到顶部