介绍
通过腾讯云 IoT Video 小程序 P2P 服务,引入 IoT Video X-P2P 插件和 P2P-Player 插件,可实现摄像头和小程序直接打洞传输视频流;配合云端的 Server SDK,可实现小程序和小程序,小程序和 App 之间的数据共享。
准备工作
申请腾讯云 IoT Video P2P 服务,获取访问密钥(联调阶段可直接使用 demo 里的密钥,正式发布时请使用我们邮件提供给您的正式密钥)。
向腾讯云 IoT Video 团队申请使用 IoT Video X-P2P 插件 和 IoT Video P2P-Player 插件。
有使用 live-player 的权限,详见 官方文档。
如果使用 1v多 模式,需要将 flv 流的域名加到小程序的
request 合法域名
和 tcp 合法域名
配置中,详请参见 服务器域名配置官方文档。微信版本限制
微信 8.0.10 以上版本
基础库 2.19.3 以上版本。
开发指引
开发文档
Demo 源码
说明:
原理介绍
0:初始化阶段。
小程序在启动时就可以调用 IoT Video P2P 插件的 init 接口,初始化 p2p 模块,入参填写腾讯云 IoT Video 分配的 appKey 和 appKeySecret 等信息。
1:小程序用户选择某个摄像头。
小程序引用 IoT Video P2P-Player,返回
livePlayerContext
, 可以直接对live-player
的 context 进行操作。如果是1v1,小程序调用 IoT Video P2P 插件的 startP2PService 接口,开始建立 p2p 连接。
2:小程序利用
livePlayerContext
触发播放。3:插件启动播放。
P2P-Player 插件抛出拉流事件 playerStartPull 给小程序应用。
小程序应用调用 XP2P 插件的 startStream 接口,传入需要播放的摄像头 ID 和播放 URL,并设置消息接收回调和数据接收回调。
4:数据流会通过第3步设置的数据接收回调,传递给 P2P-Player 插件播放。
5:小程序用户停止播放。
6:插件终止播放。
小程序调用 P2P 插件的 stopStream、stopServiceById 终止传输数据。
小程序 Demo 或自有小程序操作 live-player 的 context,停止播放。
7:消耗。
小程序退出时,调用 IoT Video P2P 插件的 destroy 接口,销毁 p2p 模块。
小程序 Demo
Demo 地址
源码
Demo 使用
注意:
Demo UI 交互可能更新,但主要流程不变。
1. 进入主页面。
"X-P2P Demo IPC" 演示1V1 P2P 直连摄像头场景。
"X-P2P Demo 1vN-xntp" 和 "X-P2P Demo 1vN-tcp" 演示 1V 多 P2P 场景。
“多播放器” 演示多播放器的调用。
2. 1V1 P2P 直连摄像头场景:
如果 x-p2p 插件还未初始化,先单击 initModule 初始化。
填写 "productId"、"deviceName"、"xp2pInfo",xp2pInfo 即设备属性中的 "sys_p2p_info" 字段,可通过 获取设备属性数据的 API 获取。
“flvFile”字段可设置播放清晰度,取值参考 信令交互文档。
单击 prepare 和 startPlay 即可开始播放。
单击不加密对讲和加密对讲可演示小程序语音对讲,单击挂断停止对讲。
修改信令 command 的 "cmd=xxx" 可演示自定义信令。