代码:
export async function fetchMetaLocalVideo(videoLocalPath: string): Promise<media.AVMetadata|undefined> {
if (canIUse('SystemCapability.Multimedia.Media.AVMetadataExtractor')) {
let avMetadataExtractor = await media.createAVMetadataExtractor()
console.info('fetchFirstFrameVideo', 'videoUrl: ' + videoLocalPath)
let fd: number = fs.openSync(videoLocalPath, 0o0).fd;
let fileSize: number = fs.statSync(videoLocalPath).size;
let dataSrc: media.AVDataSrcDescriptor = {
fileSize: fileSize,
callback: (buffer, len, pos) => {
if (buffer == undefined || len == undefined || pos == undefined) {
console.error('fetchFirstFrameVideo', `dataSrc callback param invalid`)
return -1
}
class Option {
offset: number | undefined = 0;
length: number | undefined = len;
position: number | undefined = pos;
}
let options = new Option();
let num = fs.readSync(fd, buffer, options)
console.info('fetchFirstFrameVideo', 'readAt end, num: ' + num)
if (num > 0 && fileSize >= pos) {
return num;
}
return -1;
}
}
avMetadataExtractor.dataSrc = dataSrc;
let metadata = await avMetadataExtractor.fetchMetadata()
console.info(`fetchFirstFrameVideo metadata: ${JSON.stringify(metadata)}`)
avMetadataExtractor.release()
return metadata
} else{
return undefined
}
}
目前相机拍摄的视频元数据只能通过相机的接口获取:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/camera-metadata-V5
录制视频可参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-media-V5\#avrecorder9