# AVPlayerBasicControl
**Repository Path**: harmonyos_samples/avplayer-basic-control
## Basic Information
- **Project Name**: AVPlayerBasicControl
- **Description**: AVPlayer自有基础播控能力,主要包括播放、暂停、跳转播放、静音播放、循环播放、窗口缩放模式设置、倍速设置、音量设置等场景。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2025-08-25
- **Last Updated**: 2025-09-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 基于AVPlayer实现视频基础播控功能
## 项目简介
本示例主要展示了如何基于AVPlayer系统播放器实现播放本地视频相关功能,指导开发者实现视频加载、播放、暂停、退出;跳转播放;静音播放;循环播放;窗口缩放模式设置;倍速设置;音量设置;字幕挂载等开发场景。
## 效果预览
| 播放 | 暂停 | 倍速弹窗 |
|-----------------------------------------------------------------|------------------------------------------|----------------------------------------------------|
|
|
|
|
| 静音设置 | 音量设置 | 窗口缩放模式设置 |
|------------------------------------------------------|-------------------------------------------------|----------------------------------------------------|
|
|
|
|
## 使用说明
1. 下载sample,编译运行;
2. 运行成功后,视频自动开始播放;
3. 点击视频界面,唤起视频操作面板,再次点击操作面板消失,如果不做任何操作操作界面会5s自动消失;
4. 点击暂停/播放按钮,控制视频暂停播放;
5. 滑动视频进度条,视频跳转到指定位置,在视频中间会出现时间进度方便用户查看视频进度;
6. 点击倍速,可以选择1.0、1.25、1.75、2.0进行倍速调节;
7. 点击静音按钮,可以设置静音模式播放;
8. 点击窗口缩放模式按钮,可以选择拉伸至与窗口等大、缩放至最短边填满窗口;
9. 长按屏幕,控制视频2.0倍速播放;
10. 上下滑动屏幕,可以设置视频播放音量;
11. 视频下方显示字幕,并可以点击语言切换按钮切换字幕;
12. 视频自动循环播放;
13. 点击左上角退出箭头,退出应用。
## 目录结构
```
├──entry/src/main/ets // 代码区
│ ├──common
│ │ ├──constants
│ │ │ └──CommonConstants.ets // 公共常量
│ │ └──utils
│ │ ├──GlobalContext.ets // 公共工具类
│ │ └──TimeUtils.ts // 视频时间帮助类
│ ├──views
│ │ ├──languageDialog.ets // 弹幕语言切换弹窗
│ │ ├──ScaleDialog.ets // 窗口缩放模式设置弹窗
│ │ ├──SetVolumn.ets // 设置音量组件
│ │ ├──SpeedDialog.ets // 播放倍速弹窗
│ │ └──VideoOperate.ets // 视频操作组件
│ ├──controller
│ │ └──AvPlayerController.ets // avplayer公共控制类
│ ├──entryability
│ │ └──EntryAbility.ets // 应用入口Ability
│ ├──model
│ │ └──VideoData.ets // 视频数据类
│ └──pages
│ └──Index.ets // 首页视频界面
└──entry/src/main/resources // 应用资源目录
```
## 具体实现
+
视频倍速切换、暂停、播放、切换视频、视频跳转的功能接口都封装在AvPlayerController.ets,源码参考:[AvPlayerController.ets](entry/src/main/ets/controller/AvPlayerController.ets);
+ 使用media.createAVPlayer()来获取AVPlayer对象;
+ 倍速切换:选择不同倍速时调用avPlayer.setSpeed(speed: PlaybackSpeed);
+ 暂停、播放:点击暂停、播放按钮时调用avPlayer.pause()、avPlayer.play();
+ 视频跳转:在拖动滑动条时调用avPlayer.seek();
+ 静音播放:点击静音按钮时调用avPlayer.setMediaMuted();
+ 音量设置:为元素添加手势上下滑动监听PanGesture,滑动时时显示AVVolumePanel组件并根据滑动距离计算音量volume值;
+ 窗口缩放模式设置:选择不同的窗口缩放模式时设置avPlayer的videoScaleType属性值;
+ 长按倍速:为元素添加手势长按监听LongPressGesture,长按时调用avPlayer.setSpeed(speed: PlaybackSpeed);
+ 循环播放:在视频prepared状态下,设置avPlayer的loop属性值为true。
+ 字幕挂载:视频初始化时调用avPlayer.addSubtitleFromFd()设置外挂字幕资源。
## 相关权限
不涉及
## 约束与限制
1.本示例仅支持标准系统上运行,支持设备:华为手机。
2.HarmonyOS系统:HarmonyOS 5.1.0 Release及以上。
3.DevEco Studio版本:DevEco Studio 5.1.0 Release及以上。
4.HarmonyOS SDK版本:HarmonyOS 5.1.0 Release SDK及以上。