0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OpenAtom OpenHarmony ? 来源:OpenAtom OpenHarmony ? 2025-08-21 10:22 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

样例简介

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

使用说明

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

a08e33d0-7ce5-11f0-a18e-92fbcf53809c.png

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

a09c61b2-7ce5-11f0-a18e-92fbcf53809c.png

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

a0a87d80-7ce5-11f0-a18e-92fbcf53809c.png

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

a0b7cab0-7ce5-11f0-a18e-92fbcf53809c.png

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

a0c4878c-7ce5-11f0-a18e-92fbcf53809c.png

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

a0d528e4-7ce5-11f0-a18e-92fbcf53809c.png

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

a0e21c84-7ce5-11f0-a18e-92fbcf53809c.png

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

a0f14236-7ce5-11f0-a18e-92fbcf53809c.png

样例代码拆解

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

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

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

1.视频播放

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

a0fe0872-7ce5-11f0-a18e-92fbcf53809c.png

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

a10b44e2-7ce5-11f0-a18e-92fbcf53809c.png

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

a1186564-7ce5-11f0-a18e-92fbcf53809c.png

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

a128e8c6-7ce5-11f0-a18e-92fbcf53809c.png

2.视频暂停

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

a1380da6-7ce5-11f0-a18e-92fbcf53809c.png

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

a145aa06-7ce5-11f0-a18e-92fbcf53809c.png

3.视频定点播放

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

a150c440-7ce5-11f0-a18e-92fbcf53809c.png

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

a161d1f4-7ce5-11f0-a18e-92fbcf53809c.png

4.视频倍速设置

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

a16dd292-7ce5-11f0-a18e-92fbcf53809c.png

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

a1876ec8-7ce5-11f0-a18e-92fbcf53809c.png

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

a191b7a2-7ce5-11f0-a18e-92fbcf53809c.png

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

a1a06f72-7ce5-11f0-a18e-92fbcf53809c.png

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

a1ad8414-7ce5-11f0-a18e-92fbcf53809c.png

a1bdd4fe-7ce5-11f0-a18e-92fbcf53809c.png

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

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

a1ca43ce-7ce5-11f0-a18e-92fbcf53809c.png

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

a1dcd462-7ce5-11f0-a18e-92fbcf53809c.png

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

a1e97488-7ce5-11f0-a18e-92fbcf53809c.png

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

a1f99afc-7ce5-11f0-a18e-92fbcf53809c.png

a20316a4-7ce5-11f0-a18e-92fbcf53809c.png

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

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

a20f3dbc-7ce5-11f0-a18e-92fbcf53809c.png

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

a21b69e8-7ce5-11f0-a18e-92fbcf53809c.png

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

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

a22c1eb4-7ce5-11f0-a18e-92fbcf53809c.png

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

a2397a50-7ce5-11f0-a18e-92fbcf53809c.png

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

a245493e-7ce5-11f0-a18e-92fbcf53809c.png

a2518000-7ce5-11f0-a18e-92fbcf53809c.png

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

a2655c24-7ce5-11f0-a18e-92fbcf53809c.png

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

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

a270db76-7ce5-11f0-a18e-92fbcf53809c.png

结语

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

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

    关注

    6

    文章

    1978

    浏览量

    74140
  • 开源
    +关注

    关注

    3

    文章

    3785

    浏览量

    44150
  • avplayer
    +关注

    关注

    0

    文章

    3

    浏览量

    1005
  • 鸿蒙
    +关注

    关注

    60

    文章

    2660

    浏览量

    44366

原文标题:拆·应用丨第2期:基于开源鸿蒙的AVPlayer视频播控开发样例

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于开源鸿蒙视频播放开发

    开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发针对视频播放场景,聚焦
    的头像 发表于 08-19 10:41 ?468次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的<b class='flag-5'>视频</b>播放<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>

    鸿蒙开发-视频播放器方案

    在HarmonyOS系统中,提供两种视频播放开发的方案: [AVPlayer]:功能较完善的音视频播放ArkTS/JS API,集成了流媒体和本地资源解析,媒体资源解封装,
    发表于 02-19 17:20

    鸿蒙5开发宝藏案例分享---在线短视频流畅切换

    “别卷了!鸿蒙官方早把‘性能优化外挂’塞你手里了,就藏在开发者联盟的【最佳实践】里!” 兄弟们,最近在鸿蒙开发者联盟里扒文档时, 无意间挖到个宝藏分区——【最佳实践】 **。好家伙!几
    发表于 06-12 11:31

    鸿蒙对中国开源软件会有什么的影响?

    结合的核心技术,这也可能成为酝酿中的中国开源社区之重大意义所在。安卓是基于Linux内核(全球最重要的开源kernel)的开源系统。华为高管强调,将安卓应用程序迁移到鸿蒙OS只需1-2
    发表于 09-15 11:23

    【OpenHarmony开发】智能家居相关demo汇总

    、 基于hi3516dv300开发开发的智能电子牌本demo是基于hi3516dv300开发板,使用开源鸿蒙OpenHarmony
    发表于 03-04 16:32

    【每日精选】开源鸿蒙系统DAYU200教程及Tina Wi-Fi模组移植

    ] 支持开源鸿蒙系统 DAYU200 镜像烧录教程【问答】请问下HiHope_DAYU200 如何搭建编译开发环境?[经验]作品分享-基于RT-Thread系统和N32G457开发
    发表于 03-15 15:32

    鸿蒙开源全场景应用开发资料汇总

    1、鸿蒙开源全场景应用开发——视频编解码面对鸿蒙这一全新的生态,广大消费者在积极尝鲜的同时,家中不可避免会出现安卓设备和
    发表于 03-23 10:09

    基于OpenHarmony开发的demo展示

    基于OpenHarmony开发的demo,包括智能停车场、分布式游戏、分布式音频播放、分布式菜单、视频播放器等~
    发表于 04-27 15:12

    HarmonyOS音频开发指导:使用AVPlayer开发音频播放功能

    播放API,有助于降低开发工作量,实现更佳的音频播放效果。 ● ??AVPlayer??:功能较完善的音频、视频播放ArkTS/JS API,集成了流媒体和本地资源解析、媒体资源解封装、音频解码和音频
    发表于 10-19 14:26

    鸿蒙开源意味着什么

    鸿蒙开源意味着什么?在华为开发者大会上,大家都为鸿蒙系统而激动,当华为表示会开源的时候,现场掌声雷动。鸿
    的头像 发表于 06-28 10:35 ?8264次阅读

    openharmony开源社区 OpenHarmony开发上新了

    openharmony开源社区 OpenHarmony开发上新了 OpenHarmony 开源项目是由开放原子
    的头像 发表于 04-25 16:37 ?2837次阅读

    OpenHarmony创意开发亮相HDC2022 共创欣欣向荣的“开源雨林”

    开发展品,适配OpenHarmony的各个版本,满足不同行业与开发者对不同类型设备的开发,让到场的不少
    的头像 发表于 11-22 17:38 ?985次阅读
    OpenHarmony创意<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>亮相HDC2022 共创欣欣向荣的“<b class='flag-5'>开源</b>雨林”

    2025开源鸿蒙开发者大会圆满落幕

    近日,开源鸿蒙开发者大会2025(OHDC.2025,简称“大会”)在深圳隆重开幕。大会正式发布了开源鸿蒙5.1 Release版本,举行了
    的头像 发表于 05-26 17:03 ?731次阅读

    华为亮相2025开源鸿蒙开发者大会

    近日,开源鸿蒙开发者大会2025(以下简称大会)在深圳成功举办。大会以开源鸿蒙5.1 Release版本发布为契机,聚焦
    的头像 发表于 05-29 09:07 ?709次阅读

    开鸿开发板深度体验:从开源鸿蒙开发到AI场景实践

    开鸿开发板KaihongBoard-3588S-SBCKaihongBoard-3576-SBC体验开源鸿蒙能力学习开源鸿蒙
    的头像 发表于 07-03 17:03 ?637次阅读
    开鸿<b class='flag-5'>开发</b>板深度体验:从<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>到AI场景实践