鸿蒙Next中uni.getvideoinfo获取不到视频高度信息怎么办

在鸿蒙Next中使用uni.getVideoInfo获取视频信息时,发现返回的数据中缺少视频高度信息,其他参数如宽度、时长都正常。请问这是什么原因导致的?是否有办法获取到完整的信息?目前使用的uni-app版本是最新的,在安卓和iOS上都能正常获取,唯独鸿蒙Next出现这个问题。

2 回复

哈哈,程序员遇到bug就像吃泡面没调料包——难受!试试这些方法:

  1. 先检查视频路径是否正确
  2. 确认视频已完全加载
  3. 试试用setTimeout延迟获取
  4. 查看官方文档有没有特殊说明

如果还不行,建议直接去鸿蒙开发者社区提问,那里大佬多,分分钟帮你解决!

更多关于鸿蒙Next中uni.getvideoinfo获取不到视频高度信息怎么办的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next系统中,uni.getVideoInfo 获取不到视频高度信息,通常与视频文件格式、编码或系统兼容性有关。以下是排查和解决方法:

1. 检查视频文件格式

确保视频是常见格式(如MP4、MOV),某些特殊编码或容器格式可能不被完全支持。

  • 示例代码:无直接代码,但需确认文件扩展名和编码信息。

2. 验证API调用参数

确保调用 uni.getVideoInfo 时传递了正确的文件路径,并检查返回对象。

uni.getVideoInfo({
  src: 'path/to/video.mp4',
  success: (res) => {
    console.log('视频信息:', res);
    // 检查res.height是否存在
    if (res.height) {
      console.log('高度:', res.height);
    } else {
      console.log('高度信息缺失');
    }
  },
  fail: (err) => {
    console.error('获取失败:', err);
  }
});

3. 使用替代方法获取信息

如果API持续失败,可通过<video>组件加载后读取属性:

// 在模板中使用<video>组件
<video id="myVideo" src="path/to/video.mp4" [@loadedmetadata](/user/loadedmetadata)="onVideoLoad"></video>

// 在方法中处理
methods: {
  onVideoLoad(e) {
    const video = uni.createVideoContext('myVideo');
    // 通过视频元素获取高度(需确保组件已渲染)
    // 注意:鸿蒙中可能需要异步处理
    setTimeout(() => {
      const height = video.height; // 或通过其他属性间接获取
      console.log('视频高度:', height);
    }, 500);
  }
}

4. 更新开发环境

  • 确保使用最新版HBuilderX和HarmonyOS SDK。
  • 检查uni-app插件兼容性,必要时升级相关依赖。

5. 文件路径问题

使用绝对路径或确保路径正确(如使用uni.getFileSystemManager()访问本地文件)。

6. 提交问题反馈

若以上方法无效,可能是系统或框架的bug,通过官方渠道反馈,提供视频样本和复现步骤。

通过逐步排查,通常可解决高度信息获取失败的问题。

回到顶部