# VideoPlay **Repository Path**: yycodespace/video-play ## Basic Information - **Project Name**: VideoPlay - **Description**: 视频播放的主要工作是将视频数据转码并输出到设备进行播放,同时管理播放任务。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 17 - **Created**: 2025-08-06 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实现AVPlayer视频播放功能 ### 介绍 视频播放的主要工作是将视频数据转码并输出到设备进行播放,同时管理播放任务。本文将对视频播放全流程、静音播放、循环播放、倍速播放等场景开发进行介绍说明。 本示例主要展示了播放本地视频视频相关功能,使用 @ohos.multimedia.media, @ohos.resourceManager,@ohos.wifiManager等接口,实现了视频播放、暂停、调节倍速、静音播放、音量设置、窗口缩放模式设置等功能;实现效果如下。 ### 效果预览 | 播放 | 暂停 | 倍速弹窗 | |------------------------------------------------------|-------------------------------------------------|------------------------------------------------| | ![播放.png](screenshots/devices/playing.png) | ![暂停.png](screenshots/devices/pause.png) | ![img_2.png](screenshots/devices/speed_dialog.png) | | 静音设置 | 音量设置 | 窗口缩放模式设置 | | ![静音设置.png](screenshots/devices/set_media_muted.png) | ![音量设置.png](screenshots/devices/set_volume.png) | ![窗口缩放模式设置.png](screenshots/devices/scale_fit.png) | 使用说明 1.点击视频界面,唤起视频操作面板,再次点击操作面板消失,如果不做任何操作操作界面会5s自动消失; 2.点击暂停/播放按钮,控制视频暂停播放; 3.滑动视频进度条,视频跳转到指定位置,在视频中间会出现时间进度方便用户查看视频进度; 4.点击倍速,可以选择1.0、1.25、1.75、2.0进行倍速调节; 5.点击静音按钮,可以设置静音模式播放; 6.点击窗口缩放模式按钮,可以选择拉伸至与窗口等大、缩放至最短边填满窗口; 7.长按屏幕,控制视频2.0倍速播放; 8.视频自动循环播放; 9.点击左上角退出箭头,退出应用。 ### 目录结构 ``` ├──entry/src/main/ets // 代码区 │ ├──components │ │ ├──ExitVideo.ets // 退出应用组件 │ │ ├──ScaleDialog.ets // 窗口缩放模式设置弹窗 │ │ ├──SetVolumn.ets // 设置音量组件 │ │ ├──SpeedDialog.ets // 播放倍速弹窗 │ │ └──VideoOperate.ets // 视频操作组件 │ ├──entryability │ │ └──EntryAbility.ets // 应用入口Ability │ ├──pages │ │ └──Index.ets // 首页视频界面 │ └──utils │ ├──GlobalContext.ets // 公共工具类 │ ├──ResourceUtil.ets // 公共工具类 │ └──TimeUtils.ts // 视频时间帮助类 │────entry/src/main/resources // 应用资源目录 │ └────PlayerService ├──src/main/ets │ ├──common │ │ └──CommonConstants.ets // 公共常量 │ ├──component │ │ ├──VideoPlayer.ets // 公共视频播放组件 │ │ └──VideoToolBar.ets // 公共视频工具栏 │ ├──controller │ │ ├──AvPlayerController.ets // avplayer公共控制类 │ │ └──AvSessionController.ets // session公共控制类 │ ├──model │ │ └──VideoData.ets // 视频数据类 │ └──utils │ ├──BackgroundTaskManager.ets // 后台任务相关工具 │ ├──ImageUtil.ets // 图片工具 │ ├──Logger.ets // 日志工具 │ └──TimeUtils.ets // 时间工具 └──src/main/resources // 通用模块资源 ``` ### 具体实现 + 视频倍速切换、暂停、播放、切换视频、视频跳转的功能接口都封装在AvPlayerController.ets,源码参考:[AvPlayerController.ets](PlayerService/src/main/ets/controller/AvPlayerController.ets); + 使用media.createAVPlayer()来获取AVPlayer对象; + 倍速切换:选择不同的倍速时调用avPlayer.setSpeed(speed: PlaybackSpeed); + 暂停、播放:点击暂停、播放时调用avPlayer.pause()、avPlayer.play(); + 视频跳转:在拖动滑动条时调用avPlayer.seek() + 静音播放:点击静音按钮时调用avPlayer.setMediaMuted() + 音量设置:手势上下滑动时显示AVVolumePanel组件并根据滑动距离计算音量volume值; + 窗口缩放模式设置:选择不同的窗口缩放模式时设置avPlayer的videoScaleType属性值; + 长按倍速:手势长按时调用avPlayer.setSpeed(speed: PlaybackSpeed); ### 相关权限 #### ohos.permission.INTERNET #### ohos.permission.GET_NETWORK_INFO ### 依赖 不涉及。 ### 约束与限制 1.本示例仅支持标准系统上运行,支持设备:华为手机。 2.HarmonyOS系统:HarmonyOS 5.0.0 Release及以上。 3.DevEco Studio版本:DevEco Studio 5.0.0 Release及以上。 4.HarmonyOS SDK版本:HarmonyOS 5.0.0 Release SDK及以上。