# AVPlayerLongVideo **Repository Path**: harmonyos_samples/avplayer-long-video ## Basic Information - **Project Name**: AVPlayerLongVideo - **Description**: 基于AVPlayer播放长视频,主要有基本播控、精准跳转、倍速播放、音量控制、亮度控制、焦点管理、前后台感知、弹幕发送与显示、字幕挂载、视频截图、画中画播放等场景。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2025-08-25 - **Last Updated**: 2025-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于AVPlayer实现长视频播放 ## 项目简介 本文介绍了如何基于AVPlayer系统播放器实现长视频播放应用。 本文指导开发者实现基本播控、亮度控制、焦点管理、前后台感知、弹幕发送与显示、字幕挂载、视频截图、画中画、视频首帧显示等开发场景。 ## 效果预览 | 应用首页 | 画中画 | 播控中心 | 闹铃打断 | |:--------------------------------------------------------:|:---------------------------------------------------:|:-----------------------------------------------------------:|:--------------------------------------------------------:| | | | | | | 横屏页-亮度调节 | 横屏页-弹幕输入 | |:--------------------------------------------------------:|:---------------------------------------------------:| | | | | 横屏页-字幕设置 | 横屏页-视频截图 | |:-------------------------------------------------------:|:--------------------------------------------------------:| | | | ## 使用说明 1. 启动应用后显示视频播放列表及首个视频播放窗口,在播放列表和窗口中均显示相应视频的首帧图片。 2. 可通过按钮实现横竖屏切换,也可通过旋转手机自动感知切换横竖屏。 3. 来电或闹铃会自动中断视频播放,关闭后视频恢复播放。 4. 未开启画中画时,应用切换到后台后视频暂停播放,切回前台则继续播放。 5. 开启画中画时,应用切换到后台,继续以画中画形式播放。 6. 进入横屏模式后,在屏幕左侧上下滑动可调节音量,在屏幕右侧上下滑动可调节亮度,还可设置倍速播放和静音播放。 7. 进入横屏模式后,在屏幕上方显示弹幕,且在下方工具栏可输入并点击发送弹幕。 8. 进入横屏模式后,在屏幕下方显示外挂字幕;同时可点击下方工具栏字幕字体设置按钮,对字幕字体、大小、颜色进行设置。 9. 进入横屏模式后,点击下方工具栏截图按钮,可截取当前视频页面并展示在屏幕中间,同时还可点击上一帧/下一帧按钮进行微调。 10. 可通过播控中心控制视频的播放、暂停、进度拖动、上一首/下一首。 ## 工程目录 ``` ├──entry/src/main/ets │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 通用常量 │ │ └──utils │ │ ├──BackgroundTaskManager.ets // 后台任务相关工具类 │ │ ├──ImageUtil.ets // 图片工具类 │ │ ├──Logger.ets // 日志工具类 │ │ ├──TimeUtils.ets // 时间工具类 │ │ └──WindowUtil.ets // 窗口工具类 │ ├──controller │ │ ├──AvPlayerController.ets // avplayer公共控制类 │ │ ├──AvSessionController.ets // session公共控制类 │ │ └──PipWindowController.ets // 画中画公共控制类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口 │ ├──model │ │ ├──BulletCommentModel.ets // 弹幕信息实体类 │ │ ├──CaptionFontModel.ets // 字幕信息实体类 │ │ ├──VideoData.ets // 视频数据实体类 │ │ └──VideoSourceModel.ets // 视频测试数据 │ ├──pages │ │ └──IndexPage.ets // 首页 │ └──view │ ├──AVPlayer.ets // 视频播放组件 │ ├──BulletCommentView.ets // 弹幕展示组件 │ ├──CaptionFontView.ets // 字幕字体设置组件 │ ├──LanguageDialog.ets // 中英字幕切换组件 │ ├──SpeedDialog.ets // 倍速播放组件 │ ├──VideoList.ets // 视频列表组件 │ ├──VideoSnapshotView.ets // 视频截图组件 │ └──VolumeAndBrightnessView.ets // 音量亮度调节组件 └──src/main/resources // 应用资源目录 ``` ## 具体实现 1. 基于AVPlayer实现了视频的基本播控功能,包含视频播放、跳转、倍速播放、字幕挂载等,主要功能封装在AvPlayerController。 2. 基于avSession和backgroundTaskManager实现了视频的后台播放以及播控中心控制,主要功能封装在AvSessionController和BackgroundTaskManager。 3. 基于PiPWindow实现了视频画中画播放功能,在应用返回桌面时可开启画中画保持继续播放,主要功能封装在PiPWindowController。 4. 视频首帧图获取、时间转换、窗口控制等功能均在对应的工具类中进行了封装。 ## 相关权限 1. 后台任务权限:ohos.permission.KEEP_BACKGROUND_RUNNING。 ## 约束与限制 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及以上。