基于开源鸿蒙的AVPlayer视频播控开发样例

描述

【拆·应用】是为开源鸿蒙应用开发者打造的技术分享平台,是汇聚开发者的技术洞见与实践经验、提供开发心得与创新成果的展示窗口。诚邀您踊跃发声,期待您的真知灼见与技术火花!

样例简介

在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发样例基于AVPlayer实现,AvPlayer支持流媒体和本地资源解析、媒体资源解封装、视频解码和渲染功能,适用于对媒体资源进行端到端播放的场景,可直接播放mp4、mkv等格式的视频文件,为开发者提供标准化视频功能实现路径,助力构建高性能、可定制的多媒体应用。

使用说明

操作面板唤起:首页点击播放按钮,视频开始播放;再次点击画面进入全屏模式点击视频界面,唤起视频操作面板,再次点击操作面板消失,如果不做任何操作,操作界面会5s自动消失。

视频

视频播控:点击暂停/播放按钮,控制视频暂停播放。

视频

滑动进度条:视频跳转到指定位置播放,在中间区域显示时间进度。

视频

倍速切换:可以选择1.0、1.25、1.75、2.0进行倍速调节。

视频

视频切换:连接网络能在本地视频和网络视频进行切换。注意:network是网络视频,检测到没有连接网络会退出应用。

视频

音轨切换:点击AudioTrack音轨列表选择框,可以选择音轨进行切换。

视频

缩略图获取:点击进入获取缩略图界面,可以获取视频的缩略图。

视频

外挂字幕:点击Subtitle开关列表选择框,可以切换外挂字幕是否显示。

视频

样例代码拆解

下面是各个功能模块代码逻辑详细分解。样例源码链接:

https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/VideoPlay

播控模块:包括视频播放、暂停、定点播放、倍速播放等。

1.视频播放

a)视频播放窗口在CoverXComponent自定义组件中实现。

视频

b)  CoverXComponent中创建XComponent组件,并在onLoad中初始化视频。

视频

c)  初始化视频中创建视频播放器,并监听播放状态变化。

视频

d)  在监听播放状态中,等到达prepared状态时,调用avPlayer.play()播放视频

视频

2.视频暂停

a)暂停按钮绘制在VideoOperate组件中。

视频

b)  使用Image组件绘制播放、暂停按钮图标,点击调用视频暂停、播放接口。

视频

3.视频定点播放

a) 使用Slider组件绘制视频进度条,并设置拖动或点击时触发事件回调。

视频

b)  在回调事件中,调用avPlayer.seek接口进行视频定点播放。

视频

4.视频倍速设置

a)使用Button组件作为倍速选择按钮,点击后打开倍速选择弹框。

视频

b)  通过CustomDialogController自定义弹框实现倍速选择。

视频

c)  SpeedDialog组件中通过List实现1.0X、1.25X、1.75X、2.0X倍速选择。

视频

d)  List点击事件中,设置视频播放具体倍速。

视频

e)  调用avPlayer.setSpeed()设备倍速。

视频

 

视频

视频切换:设备联网后,本地视频和网络视频都可以播放。

a)  首先是Row容器组件,组件中包含列表图标,播放的视频名称,和列表下拉图标。并在点击事件中设置isShow为true或false,控制视频列表VideoPanel是否展示。

视频

b)  通过VideoPanel绘制视频列表,点击切换视频。

视频

c)  VideoPanel中通过List组件绘制视频列表,包括视频名称、是否当前播放,点击后调用VideoChoose切换视频播放。

视频

d)  如下图所示,VideoChoose中调用videoReset,即avPlayer.reset重置视频。

视频

 

视频

音轨切换:视频音轨切换,即视频有多种语言配音可进行音轨切换。

a)  通过Select组件绘制,并通过onSelect调用setAudioTrack接口设置音轨。

视频

b)  setAudioTrack中,通过deselectTrack和selectTrack进行音轨切换。

视频

字幕展示:设备联网后,点击字幕开,在视频下方展示外挂字幕。

a)  通过Select组件绘制,并在onSelect调用setSubtitleState打开、关闭字幕。

视频

b)  setSubtitleState中设置当前的字幕状态。

视频

c)  通过Text组件显示字幕。

视频

 

视频

d)  this.text是监听subtitleUpdate获取的字幕内容。

视频

缩略图获取:视频跳转到指定位置播放,在中间区域显示时间进度。

a) 通过createAVMetadataExtractor从媒体资源中提取元数据,作为缩略图。通过createAVImageGenerator从视频资源中获取指定时间的缩略图。

视频

结语

以上是本次样例具体功能模块的实现,通过本样例让开发者们了解到如何使用AVPlayer开发视频播放功能,包括创建AVPlayer、设置播放资源和窗口、设置播放倍速、播放控制(播放/暂停/跳转/停止)、重置销毁资源、字幕展示等;除此之外,开源鸿蒙也提供了丰富的基础组件和其他功能模块,依托开源特性可灵活定制底层功能,借助分布式架构实现 “一次开发,多端部署”,大幅降低跨设备协同开发成本,一系列配套的开发工具和教程可让开发者快速上手,欢迎更多的开发者加入到开源鸿蒙应用开发中,创造更多奇思妙想的应用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分