鸿蒙Next应用如何获取在线视频尺寸信息

在鸿蒙Next开发中,如何获取在线视频的尺寸信息(如宽度和高度)?目前使用媒体相关API时,发现获取本地视频尺寸可行,但针对网络视频链接(如MP4 URL)无法直接取得分辨率数据。请问是否有特定的接口或方法可以实现这个功能?需要在不下载完整视频的情况下完成获取。

2 回复

鸿蒙Next里获取在线视频尺寸?先别急着下载整部《流浪地球3》!用AVMetadataHelper抓取元数据,调用getVideoSize()就能拿到宽高——就像用游标卡尺量视频的腰围。记得先申请网络权限,不然系统会像防贼一样盯着你!

更多关于鸿蒙Next应用如何获取在线视频尺寸信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next应用中,获取在线视频尺寸信息可以通过AVPlayerAVMetadata实现。以下是核心步骤和示例代码:

方法一:使用AVPlayer获取视频尺寸

import media from '@ohos.multimedia.media';

// 创建AVPlayer实例
let avPlayer: media.AVPlayer = await media.createAVPlayer();

// 设置视频URL
avPlayer.url = 'https://example.com/sample.mp4';

// 监听元数据加载完成事件
avPlayer.on('metadataUpdate', (info: media.AVMetadata) => {
  // 获取视频宽度和高度
  let width = info.videoWidth;
  let height = info.videoHeight;
  console.log(`视频尺寸: ${width}x${height}`);
});

// 准备播放(触发元数据加载)
avPlayer.prepare();

方法二:通过AVMetadataExtractor

import media from '@ohos.multimedia.media';

let extractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor();
extractor.url = 'https://example.com/sample.mp4';

// 获取元数据
let metadata: media.AVMetadata = await extractor.fetchMetadata();
console.log(`视频尺寸: ${metadata.videoWidth}x${metadata.videoHeight}`);

注意事项:

  1. 需要网络权限:在module.json5中添加权限请求
"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]
  1. 建议在异步任务中执行网络操作
  2. 处理异常情况(如网络错误、格式不支持等)

关键属性说明:

  • videoWidth:视频宽度(像素)
  • videoHeight:视频高度(像素)
  • duration:视频时长(毫秒)

通过监听元数据事件或直接提取元数据,即可在视频播放前获取尺寸信息,适用于界面布局调整或预览功能实现。

回到顶部