参考demoimport { media } from '@kit.MediaKit'; import { common } from '@kit.AbilityKit'; import fs from '@ohos.file.fs'; import { BusinessError, request } from '@kit.BasicServicesKit'; import { image } from '@kit.ImageKit'; // 获取应用文件路径 let context = getContext(this) as common.UIAbilityContext; let cacheDir = context.cacheDir; @Entry @Component struct Index { @State message: string = 'Hello World'; // pixelMap对象声明,用于图片显示 @State pixelMap: image.PixelMap | undefined = undefined; build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: '__container__', align: VerticalAlign.Center }, middle: { anchor: '__container__', align: HorizontalAlign.Center } }) .onClick(() => { this.downLoad() }) .height('100%') .width('100%') Image(this.pixelMap).width(300).height(300) .margin({ top: 20 }) } } downLoad(){ try { request.downloadFile(context, { url: '', filePath: cacheDir + '/b.mp4' }).then((downloadTask: request.DownloadTask) => { downloadTask.on('complete', () => { console.info('download complete'); this.testFetchFrameByTime(cacheDir + '/b.mp4') }) }).catch((err: BusinessError) => { console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`); } } // 获取缩略图 async testFetchFrameByTime(filePath: string) { // 创建AVImageGenerator对象 let avImageGenerator: media.AVImageGenerator = await media.createAVImageGenerator() let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY); let avFileDescriptor: media.AVFileDescriptor = { fd: file.fd }; avImageGenerator.fdSrc = avFileDescriptor; // 初始化入参 let timeUs = 0 let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC let param: media.PixelMapParams = { width : 300, height : 400, } // 获取缩略图(promise模式) this.pixelMap = await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param) // 释放资源(promise模式) avImageGenerator.release() console.info(`release success.`) fs.closeSync(file); } }
参考demo