核心方案概述
针对 RV1106 在 4G 网络下的实时视频传输需求,我们采用 libdatachannel(轻量级 WebRTC 库)替代原生实现,配合 STUN/TURN 服务器解决 NAT 穿透问题。整体流程如下:
- 硬件层:RV1106 通过 V4L2 采集摄像头数据,利用 RK MPI 硬件编码器(H.264)进行压缩。
- 传输层:基于 libdatachannel 建立 WebRTC 连接,通过 STUN 获取公网地址、TURN 中继解决 4G 环境下的 NAT 穿透。
- 客户端:浏览器或 APP 使用原生 WebRTC API 接收并播放视频流。
关键步骤与实现
1. 环境准备
- 硬件:RV1106 开发板(带 MIPI 摄像头)、4G 模块(如 EC20)、SIM 卡。
- 工具链:RV1106 官方交叉编译工具链(
arm-rockchip830-linux-uclibcgnueabihf-*)。 - 依赖库:需交叉编译 OpenSSL(加密支持)和 libdatachannel(WebRTC 核心)。
2. 交叉编译依赖库
(1)交叉编译 OpenSSL
# 下载源码
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w
# 配置交叉编译(安装到 /opt/openssl-arm)
./Configure linux-armv4 no-asm shared --prefix=/opt/openssl-arm \
--cross-compile-prefix=arm-rockchip830-linux-uclibcgnueabihf-
# 编译安装
make -j4 && sudo make install
(2)交叉编译 libdatachannel
# 下载源码
git clone https://github.com/paullouisageneau/libdatachannel.git
cd libdatachannel && git submodule update --init --recursive
# 创建交叉编译配置(toolchain.cmake)
cat > toolchain.cmake << EOF
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-rockchip830-linux-uclibcgnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-rockchip830-linux-uclibcgnueabihf-g++)
set(OPENSSL_ROOT_DIR /opt/openssl-arm)
EOF
# 编译安装(到 /opt/libdatachannel-arm)
mkdir build-arm && cd build-arm
cmake .. -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/opt/libdatachannel-arm \
-DUSE_GNUTLS=OFF -DBUILD_SHARED_LIBS=OFF
make -j4 && sudo make install

