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.9 -
BK7259 推荐版本:
4.0
bash
# 克隆 SDK git clone https://gitlab.bekencorp.com/armino/bk_avdk_smp.git # 或镜像 git clone https://github.com/bekencorp/bk_avdk_smp.git -
-
yangipc 解决方案:
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 :
-
coturn :
2.1.3 客户端
客户端源码获取地址
bash
git clone https://github.com/metartc/yangipcclient.git
# 或 Gitee 镜像
git clone https://gitee.com/metartc/yangipcclient.git
2.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 参数与设备端配置完全匹配,即可实现跨网络的音视频通信。