1. 概述
本指南详细阐述了metaIPC2的设备端(BK7258/BK7259)/云端/客户端整体解决方案的系统集成与开发流程。
性能实测:在 BK7258 平台上,实测传输 H.264 视频流至浏览器的端到端延迟稳定在 100-150ms 区间。全面优化后,延迟有望进一步降低至 60-120ms。
硬件差异:鉴于 BK7259 具备更高的硬件配置,其预期性能表现将优于 BK7258。
编解码支持:
视频:H.264
音频:PCMA / PCMU
2. 环境准备与代码获取
2.1 代码获取
2.1.1 设备端
SDK 仓库(请根据芯片选择对应分支/版本):
BK7258 推荐版本:
3.1.9BK7259 推荐版本:
4.0
bash
# 克隆 SDK git clone https://gitlab.bekencorp.com/armino/bk_avdk_smp.git # 或镜像 git clone https://github.com/bekencorp/bk_avdk_smp.gityangipc 解决方案:
bash
git clone https://github.com/metartc/bk_solution_yangipc.git # 或 Gitee 镜像 git clone https://gitee.com/metartc/bk_solution_yangipc.git
2.1.2 云端
云端需安装mosquitto和coturn两个服务器软件。
mosquitto:
Download | Eclipse Mosquittocoturn:
https://github.com/coturn/coturn
2.1.3 客户端
客户端源码获取地址
bash
git clone https://github.com/metartc/yangipcclient.git # 或 Gitee 镜像 git clone https://gitee.com/metartc/yangipcclient.git2.2 编译
2.2.1 设备端
首先,参考bk_solution_yangipc目录下的README.md打上sdk_patch目录内的补丁。然后执行以下编译步骤:
bash
# 创建项目目录并进入 SDK mkdir -p ~/armino && cd ~/armino cd bk_avdk_smp/bk_solution_yangipc/projects/yangipc # 清理并编译 make clean make bk7258 # 若编译 BK7259,请使用对应的 make target编译产物可用于烧录到对应芯片。
2.2.2 云端
2.2.2.1 coturn
bash
cd coturn ./configure make -j8 sudo cp ./examples/etc/turnserver.conf /usr/local/etc/ # 后台运行 turnserver -c /usr/local/etc/turnserver.conf -v核心配置/usr/local/etc/turnserver.conf:
# 监听端口 STUN/TURN listening-port=3478 # 加密 TURNS 端口 tls-listening-port=5349 # 内网网卡 IP listening-ip=0.0.0.0 relay-ip=服务器内网IP # 云服务器必填公网 IP external-ip=服务器公网IP # 中继媒体端口范围 min-port=49152 max-port=65535 # 域名标识(可自定义) realm=metartc.cn # 自定义账号密码 user=test:123456请将服务器内网IP和服务器公网IP替换为实际地址,并根据需要修改账号密码。
2.2.2.2 mosquitto
编译(需开启 SSL、WebSocket 和 systemd 支持):
bash
cd mosquitto make WITH_SSL=yes WITH_WEBSOCKETS=yes WITH_SYSTEMD=yes运行:
bash
cd mosquitto/bin #后台运行 ./mosquitto -c mosquitto.conf &确保配置文件mosquitto.conf已正确设置,允许设备与客户端的 MQTT 连接。
2.2.3 客户端
客户端支持多平台,各平台工程目录及构建方式如下:
移动端:
iOS:Xcode 工程
Android:Android Studio 工程
跨平台框架:
Flutter (Android/iOS)
React Native (Android/iOS)
Uniapp (Android/iOS)
桌面端:
Windows:Qt 工程
macOS:Qt 工程
Linux:Qt 工程
客户端的具体编译与运行细节,请参考对应的官方文档或本站相关文档。
3. 参数配置
3.1 设备端
在ap_main.c中实现配置初始化函数yang_init_ipcConfig
void yang_init_ipcConfig(YangIpcConfig* config) { // 音频方向:0 单向直播,1 对讲 config->audioDirection = 1; // 视频参数 config->width = 640; config->height = 480; config->fps = 30; // 设备名称(客户端需用相同名称才能联通) strcpy(config->deviceName, "test1001"); // coturn 配置 config->icePort = 3478; strcpy(config->iceServerIP, "192.168.0.104"); strcpy(config->iceUserName, "metartc"); strcpy(config->icePassword, "metartc"); // MQTT 配置 config->mqttPort = 1883; strcpy(config->mqttServerIP, "192.168.0.104"); memset(config->mqttUserName, 0, sizeof(config->mqttUserName)); memset(config->mqttPassword, 0, sizeof(config->mqttPassword)); }连接 Wi-Fi 网络:
yangipc_wifi_sta_connect("ssid", "password");启动 yangipc 服务(通过命令行或系统命令)
bash
ap_cmd yang_ipc注意:实际部署时,请将 IP 地址、端口、账号密码、Wi-Fi 凭据和设备名称替换为真实环境的值。
3.2 客户端
3.2.1 浏览器
使用index_mqtt_hd.html页面,配置关键参数:
第 107 行附近,设置发布主题与设备名称一致:
javascript var yang_pubTopic = "test1001";同时配置 MQTT 服务器参数和 ICE 服务器 (coturn) 参数,确保与设备端保持一致。
打开网页即可建立连接,接收视频流。
3.2.2 原生客户端
客户端通过YangIpcPlayer类进行连接和播放。
cpp
class YangIpcPlayer; // 启动 MQTT 连接,传入设备名称(与设备端 deviceName 一致) startMqtt((char*)"test1001"); // 设置 ICE 服务器 (coturn) void setIceServer(char* ip, int32_t port, char* username, char* password); // 设置 MQTT 服务器 void setMqttServer(bool isTls, char* ip, int32_t port, char* username, char* password);按顺序调用上述接口,确保 ICE 和 MQTT 参数与设备端配置完全匹配,即可实现跨网络的音视频通信。