metaIPC2 on FreeRTOS: 开发实战指南 (BK7258/BK7259) 📅 2026/6/30 22:27:54 1. 概述本指南详细阐述了metaIPC2的设备端(BK7258/BK7259)/云端/客户端整体解决方案的系统集成与开发流程。性能实测在 BK7258 平台上实测传输 H.264 视频流至浏览器的端到端延迟稳定在 100-150ms 区间。全面优化后延迟有望进一步降低至 60-120ms。硬件差异鉴于 BK7259 具备更高的硬件配置其预期性能表现将优于 BK7258。编解码支持视频H.264音频PCMA / PCMU2. 环境准备与代码获取2.1 代码获取2.1.1 设备端SDK 仓库请根据芯片选择对应分支/版本BK7258 推荐版本:3.1.9BK7259 推荐版本:4.0bash# 克隆 SDK git clone https://gitlab.bekencorp.com/armino/bk_avdk_smp.git # 或镜像 git clone https://github.com/bekencorp/bk_avdk_smp.gityangipc 解决方案bashgit clone https://github.com/metartc/bk_solution_yangipc.git # 或 Gitee 镜像 git clone https://gitee.com/metartc/bk_solution_yangipc.git2.1.2 云端云端需安装mosquitto和coturn两个服务器软件。mosquittoDownload | Eclipse Mosquittocoturnhttps://github.com/coturn/coturn2.1.3 客户端客户端源码获取地址bashgit 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 coturnbashcd 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-port3478 # 加密 TURNS 端口 tls-listening-port5349 # 内网网卡 IP listening-ip0.0.0.0 relay-ip服务器内网IP # 云服务器必填公网 IP external-ip服务器公网IP # 中继媒体端口范围 min-port49152 max-port65535 # 域名标识可自定义 realmmetartc.cn # 自定义账号密码 usertest:123456请将服务器内网IP和服务器公网IP替换为实际地址并根据需要修改账号密码。2.2.2.2 mosquitto编译需开启 SSL、WebSocket 和 systemd 支持bashcd mosquitto make WITH_SSLyes WITH_WEBSOCKETSyes WITH_SYSTEMDyes运行bashcd mosquitto/bin #后台运行 ./mosquitto -c mosquitto.conf 确保配置文件mosquitto.conf已正确设置允许设备与客户端的 MQTT 连接。2.2.3 客户端客户端支持多平台各平台工程目录及构建方式如下移动端iOSXcode 工程AndroidAndroid Studio 工程跨平台框架Flutter (Android/iOS)React Native (Android/iOS)Uniapp (Android/iOS)桌面端WindowsQt 工程macOSQt 工程LinuxQt 工程客户端的具体编译与运行细节请参考对应的官方文档或本站相关文档。3. 参数配置3.1 设备端在ap_main.c中实现配置初始化函数yang_init_ipcConfigvoid 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 服务通过命令行或系统命令bashap_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类进行连接和播放。cppclass 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 参数与设备端配置完全匹配即可实现跨网络的音视频通信。