基础使用
融合播放器是基于轻量播放器再次封装的产物,支持可插拔的 Widget 组件,内置封装了一系列播放器控制的方法,开箱即用。
业务匹配
如果您的业务场景需要播放器里内置截图、录制、对讲、云台控制、电量显示等基础功能,无需额外开发,只需专注其它功能的交互, 那么融合播放器是您的最佳选择, 同时融合播放器也支持自定义扩展,可满足您的个性化需求。
安装依赖
使用示例
获取播放器的数据
播放器向外暴露了很多数据,比如当前是否处于全屏模式、当前是否处于对讲中等,详情请参照 useCtx api 返回参数中的 RetAtom 类型的数据。
为了避免无关数据引起不必要的更新的问题,播放器暴露出的数据使用 jotai 包装了一层,要获取状态需要使用 useStore 进行读取才能取到真正的数据。
Widget
Widget 是展示在播放器上的自定义组件。您可通过 useCtx 返回的实例方法,如 addContent、deleteContent,动态向播放器插入或移除 Widget。
在 Widget 的 props 中,会自动注入 useCtx hook 的上下文对象,便于组件内部访问播放器状态与操作接口。
部件分类
将 Widget 主要分为了五个展示区域:
- topLeft: 左上角区域
- topRight: 右上角区域
- bottomLeft: 左下角区域
- bottomRight: 右下角区域
- absolute: 绝对定位区域
图中展示的电池电量、温湿度、语音对讲、全屏切换等组件,都是平台已提供的通用 Widget。您可通过 API 便捷插入,示例如下:
使用示例
调用 Features.initPlayerWidgets 会给播放器添加与当前组件上相同的 Widget。
Features.initPlayerWidgets 方法会接收一些入参,详情请参照: initPlayerWidgets
添加自定义 Widget
在实际业务场景中,您可能不会使用全部内置的 Widget,而是更倾向于以下几种方式:
- ✅ 仅使用部分功能组件(如对讲、截屏)
- 🔧 基于内置组件扩展自定义功能
- 🛠️ 完全自定义实现,满足特定业务需求
接下来我们将通过构建一个 Demo,帮助您快速上手
- ✅ 使用播放器内置的 语音对讲 Widget
- 🛠️ 自定义实现一个 截屏 Widget
- 📸 截图成功后,在播放器中展示 Toast 提示
效果示意图
关于 Widget 的更复杂一点的功能实现请参照:Animation Widget
事件系统
事件系统采用发布订阅的形式实现,用于实现 Widget 之间的通信,或者从外部获取 Widget 传递的信息且解耦了它们之间的联系。
事件系统的实例,需要从 useCtx 返回的参数中读取,每一个播放器实例都拥有独立的事件系统
类型定义
使用示例
以下两个 Widget 都被注册到了播放器中
Widget1
Widget2