【拆·应用】是为开源鸿蒙应用开发者打造的技术分享平台,是汇聚开发者的技术洞见与实践经验、提供开发心得与创新成果的展示窗口。诚邀您踊跃发声,期待您的真知灼见与技术火花!
样例简介
在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发样例基于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、设置播放资源和窗口、设置播放倍速、播放控制(播放/暂停/跳转/停止)、重置销毁资源、字幕展示等;除此之外,开源鸿蒙也提供了丰富的基础组件和其他功能模块,依托开源特性可灵活定制底层功能,借助分布式架构实现 “一次开发,多端部署”,大幅降低跨设备协同开发成本,一系列配套的开发工具和教程可让开发者快速上手,欢迎更多的开发者加入到开源鸿蒙应用开发中,创造更多奇思妙想的应用。
-
视频
+关注
关注
6文章
1978浏览量
74140 -
开源
+关注
关注
3文章
3785浏览量
44150 -
avplayer
+关注
关注
0文章
3浏览量
1005 -
鸿蒙
+关注
关注
60文章
2660浏览量
44366
原文标题:拆·应用丨第2期:基于开源鸿蒙的AVPlayer视频播控开发样例
文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
评论