鸿蒙Next中如何根据视频地址获取视频长度
在鸿蒙Next开发中,如何通过视频URL获取视频的时长?目前需要实现一个功能,根据用户输入的视频地址(如网络或本地路径)自动解析视频长度,但官方文档未找到明确API。求教具体实现方案或示例代码,是否需要依赖第三方库?
2 回复
鸿蒙Next里想获取视频长度?试试用AVPlayer的getDuration()方法,先创建播放器设置视频源,调用方法就能拿到时长。注意:记得处理异步回调,不然可能等到花儿都谢了~
更多关于鸿蒙Next中如何根据视频地址获取视频长度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,可以通过AVPlayer类来获取视频长度。以下是具体步骤和示例代码:
- 创建AVPlayer实例:传入视频地址(支持本地路径或网络URL)。
- 监听状态变化:通过
stateChange回调,在状态变为initialized后获取视频时长。 - 获取时长:使用
AVPlayer.duration属性(单位:毫秒)。
示例代码(ArkTS):
import { media } from '@kit.MediaKit';
import { BusinessError } from '@kit.BasicServicesKit';
let avPlayer: media.AVPlayer | null = null;
// 初始化AVPlayer
function initAvPlayer(videoUrl: string) {
// 1. 创建AVPlayer实例
avPlayer = media.createAVPlayer();
// 2. 设置监听器
avPlayer.on('stateChange', (state: media.AVPlayerState) => {
if (state === media.AVPlayerState.initialized) {
// 3. 获取视频时长(毫秒)
const duration = avPlayer!.duration;
console.log(`视频时长:${duration}ms`);
// 转换为秒:duration / 1000
}
});
// 设置数据源并准备播放
avPlayer.url = videoUrl;
avPlayer.prepare();
}
// 调用示例
initAvPlayer('https://example.com/sample.mp4');
// 使用完毕后释放资源
// avPlayer.release();
注意事项:
- 需要申请网络权限(网络视频时)或在
module.json5中声明ohos.permission.INTERNET。 - 实际开发中建议添加错误处理(如监听
error事件)。 - 时长获取是异步的,需在状态回调中处理。
此方法适用于HarmonyOS NEXT的Stage模型和API 9+版本。

