# VideoCast **Repository Path**: fengcreate/VideoCast ## Basic Information - **Project Name**: VideoCast - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 16 - **Created**: 2025-03-15 - **Last Updated**: 2025-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实现视频投播功能 ## 介绍 本示例将应用接入统一投播组件AVCastPicker实现视频的投播功能,可以将手机上播放的视频投到2in1设备上继续播放,并通过投播控制器AVCastController完成投播状态下的播放控制和远端播放状态监听等操作。 ## 效果预览 ### 效果预览 | 投播前 | 开始投播 | |---------------------------------------|--------------------------------------| | ![image](screenshots/before_cast.png) | ![image](screenshots/after_cast.png) | ## 使用说明 1.双端设备需要打开蓝牙和WIFI,并可访问网络。 2.进入首页,点击右上角的投播按钮,在拉起的窗口中点击需要投播的设备,将视频投到该设备上播放。 3.投播过程中后,点击“上一集”和“下一集”按钮或视频播放列表中的视频项,可以切换投播的视频。 4.点击播放/暂停按钮可以控制投播视频的播放和暂停。 5.拖动进度条可以控制远端视频的播放位置。 6.点击“结束投播”按钮可以结束投播,并将视频切换至本机播放。 ## 工程目录 ``` ├──entry/src/main/ets/ // 应用首页 │ ├──common │ │ ├──utils │ │ │ ├──BackgroundTaskManager.ets // 后台播放功能 │ │ │ ├──CommUtils.ets // 工具类 │ │ │ └──ImageUtil.ets // 图片像素处理类 │ │ └──CommonConstants.ets // 常量类 │ ├──controller │ │ ├──AvPlayerController.ets // 视频播放控制类 │ │ └──AvPlayerController.ets // 媒体会话控制类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口类 │ ├──entrybackupability │ │ └──EntryBackupAbility.ets // 备份恢复 │ ├──model │ │ ├──BasicDataSource.ets // 懒加载DataSource │ │ ├──DataModel.ets // 视频数据常量 │ │ └──VideoData.ets // 视频数据类 │ ├──pages │ │ └──Index.ets // 程序入口 │ ├──utils │ │ ├──BackgroundTaskManager.ets // 后台播放功能 │ │ ├──CommUtils.ets // 工具类 │ │ └──ImageUtil.ets // 图片像素处理类 │ └──view │ ├──AVPlayer.ets // 视频组件 │ └──VideoList.ets // 首页视频列表 ├──entry/src/main/resources // 应用静态资源 └──entry/src/main/module.json5 // 模块配置相关 ``` ## 具体实现 1.创建AVPlayer和AVSession,通过AVSessionManager创建并激活媒体会话。 2.设置媒体资源信息,注册基础播控回调,接入系统播控中心。 3.在播放页面创建投播组件AVCastPicker。 4.注册AVSession投播控制回调outputDeviceChange,用于感知投播设备连接。 5.使用AVCastController监听控制命令,进行视频的播放控制,包括播放、暂停、上一集、下一集和进度条控制等。 6.申请投播长时任务,避免应用在投播时进入后台被系统冻结。 ## 相关权限 1.后台任务权限:ohos.permission.KEEP_BACKGROUND_RUNNING。 2.Internet网络权限:ohos.permission.INTERNET。 ## 约束与限制 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及以上。