HarmonyOS鸿蒙Next中大佬们有没有视频投屏的案例

HarmonyOS鸿蒙Next中大佬们有没有视频投屏的案例 视频投屏案例,实现进度播控

6 回复

【解决方案】 使用AVCastPicker实现音视频投播的开发步骤如下:

  1. 通过AVSessionManager创建并激活媒体会话。
  2. 设置媒体资源信息,注册基础播控回调,接入系统播控中心的基础播控。 接入投播组件前需要先适配媒体播控中心的基础播控业务,具体需要接入的内容请按照应用类型参考应用接入自检表。 应用可以通过filter字段设置需要发现和过滤的协议类型,来匹配应用期望的投播设备。
  3. 在需要投播的播放界面创建投播组件AVCastPicker。 若创建AVCastPicker后应用界面未显示,或点开Picker显示空白,请排查是否按步骤1、2接入了系统播控中心的基础播控,且正确设置了AVMetadata与Extras参数。
  4. 注册AVSession投播控制回调。用于感知投播设备连接。 连接成功后通过session获取AVCastController,用于后期的投播控制; 应用监听on(‘outputDeviceChange’)回调,在收到设备切换到对端的信息时,就可以刷新应用内的播放界面为“投播页面或遥控器页面”,并暂停本机播放。在收到切换设备到本机的信息时,可以刷新应用内的播放界面为“本地播放页面”,并开始在本机播放。
  5. 使用AVCastController进行资源播放。 如果使用本地资源播放,必须确认资源文件可用,并使用应用沙箱路径访问对应资源,参考获取应用文件路径。应用沙箱的介绍及如何向应用沙箱推送文件,请参考文件管理。
  6. 使用AVCastController,监听控制命令和进行播放控制。 应用可以通过如下监听与控制指令,实现从应用内控制投播设备,及响应来自对端设备或者系统播控中心的控制。 系统播控中心会按照应用的注册监听,来动态置灰和点亮控制卡片的按钮。
  7. 申请投播长时任务,避免应用在投播时进入后台时被系统冻结,导致无法持续投播。
  8. 结束投播。 当远端设备断开的时候,应用会收到事件,系统会自动断开连接。 应用也可以使用断开投播的接口,主动进行投播连接的断开。 建议应用监听并保存AVCastController.on(‘playbackStateChange’)回调中的position,当投播断开时,可以刷新为“本地播放详情页”在本端继续播放,并根据这个position来调整本地播放的进度。

具体的开发步骤可参考:投播组件开发指导

更多关于HarmonyOS鸿蒙Next中大佬们有没有视频投屏的案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

收到 谢谢啦,

在HarmonyOS Next中,视频投屏可通过分布式能力和AVSession框架实现。使用AVSessionManager创建媒体会话,设置播放状态与元数据。通过DeviceManager发现投屏设备,利用DistributedAudio或相关API将视频流转发至目标设备。具体可参考华为官方文档中的分布式媒体案例,使用@ohos.distributedHardware.deviceManager及@ohos.multimedia.avsession等模块进行操作。

在HarmonyOS Next中,视频投屏功能可通过分布式能力和媒体会话框架实现。以下是一个简化案例:

  1. 设备发现与连接:使用@ohos.distributedDeviceManager模块扫描并选择目标投屏设备,建立分布式连接。

  2. 媒体投屏控制

    • 通过AVSession创建媒体会话,设置视频元数据(标题、时长等)。
    • 调用AVCastController将视频流推送到远端设备,支持播放/暂停、进度拖拽、音量调节等操作。
  3. 进度同步:利用AVSession的回调机制,通过on('play'|'pause'|'seek')监听本地操作,同步到远端设备。远端状态变化也会通过事件回调更新本地UI。

关键代码片段:

// 创建投屏控制器
let castController = await avSession.createCastController(deviceId);
castController.setAVMetadata(avMetadata);
// 播放控制
castController.play();
// 进度跳转
castController.seek(timeInMs);

注意事项:

  • 需申请ohos.permission.DISTRIBUTED_DATASYNC权限
  • 确保设备在同一局域网或已绑定华为账号
  • 使用@ohos.multimedia.avsession@ohos.distributedDeviceManagerAPI

此方案可实现跨设备的视频推送与实时进度控制,适用于智能电视、平板等场景。

回到顶部