如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。
1、概述
在HarmonyOS系统中,提供两种视频播放开发的方案:
-
AVPlayer:功能较完善的音视频播放ArkTS/JS API,集成了流媒体和本地资源解析,媒体资源解封装,视频解码和渲染功能,适用于对媒体资源进行端到端播放的场景,可直接播放mp4、mkv等格式的视频文件。
-
Video组件:封装了视频播放的基础能力,需要设置数据源以及基础信息即可播放视频,但相对扩展能力较弱。Video组件在鸿蒙UI开发中已经有介绍,可以移步到👉🏻 鸿蒙UI系统组件07——视频播放器(Video) 查看
本文讨论使用AVPlayer开发视频播放功能,实现端到端播放原始媒体资源。
播放的全流程包含以下几步:
1. 创建AVPlayer
2. 设置播放资源和窗口
3. 设置播放参数(音量/倍速/缩放模式)
4.播放控制(播放/暂停/跳转/停止),
5. 重置,销毁资源。
2、AVPlayer的状态
在应用开发过程中,我们可以通过AVPlayer的state属性主动获取当前状态或使用on('stateChange')方法监听状态变化。
【如果应用在视频播放器处于错误状态时执行操作,系统可能会抛出异常或生成其他未定义的行为】
AVPlayer主要的状态罗列如下:
名称 |
类型 |
说明 |
idle |
string |
闲置状态,AVPlayer刚被创建createAVPlayer()或者调用了reset()方法之后,进入Idle状态。 首次创建createAVPlayer(),所有属性都为默认值。 调用reset()方法,url9+ 或 fdSrc9+属性会被重置,其他用户设置的属性将被保留。 |
initialized |
string |
资源初始化,在Idle 状态设置 url9+ 或 fdSrc9+属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 |
prepared |
string |
已准备状态,在initialized状态调用prepare()方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 |
playing |
string |
正在播放状态,在prepared/paused/completed状态调用play()方法,AVPlayer会进入playing状态。 |
paused |
string |
暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 |
completed |
string |
播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = 1),AVPlayer会进入completed状态,此时调用play()会进入playing状态和重播,调用stop()会进入stopped状态。 |
stopped |