惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
H
Hacker News: Front Page
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
T
Tenable Blog
博客园 - 叶小钗
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
量子位
P
Proofpoint News Feed
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
Recorded Future
Recorded Future
The Register - Security
The Register - Security
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
S
Schneier on Security
V
Vulnerabilities – Threatpost
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
G
GRAHAM CLULEY
G
Google Developers Blog
月光博客
月光博客
V
V2EX
T
Troy Hunt's Blog
A
Arctic Wolf

博客园 - lsgxeva

VisionLink-AI-Glasse RK3588 firefly net n2n config OpenWrt 集成 openNDS 进行 强制门户(Captive Portal) 认证 OpenWrt 集成 easycwmpd 成为 TR-069协议中的设备端(CPE) eh.h acu100 bridge vlan config 卫星天线(KA 0.85m 4W_BUC)使用 SatBox331-20 Modem 的性能情况 OpenSpec OPSX 完整指南 Claude Skill Creator 2.0 完整上手攻略 Auto-Memory + CLAUDE.md Conductor 完整上手攻略 GitNexus 完整上手攻略 code-review-graph 完整上手攻略 Claude Code Hooks 完整开发者指南 Openwrt switch vlan配置 llm-course Claude Code 入门教程 MT5专业交易面板 routeros RB750GR3 配置双WAN口 Quectel Modem Wiki sdxlemur 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南 - lsgxeva - 博客园 高通SDX62平台 MBIM搜网、查询信号等功能异常 Win11数字许可证激活 BirdSat VS100K info wireshark筛选语句详解 linux基线整改方法 windows基线整改方法 NanoPi_R5C ArcBox Config win10远程桌面其他电脑出现如下错误,由于数据加密错误,这个会话讲结束,请重新连接到远程计算机 如何评价杨立昆认为大模型只是对海量文本的模式进行复杂拟合,根本不懂意义? IQ200Board default access problem Win10 输入法卡顿 adaptive_relaxed_optimized 如何下载安装App Store应用旧版本教程 小米澎湃OS 关闭广告 Scrum 模型
VisionLink-RT
lsgxeva · 2026-07-25 · via 博客园 - lsgxeva

VisionLink-RT

来源 https://github.com/Caotl21/VisionLink-RT

VisionLink-RT 是一个专为 端测嵌入式 平台(如 Orange Pi 5 Pro)设计的高性能、低延迟视频推流引擎 适用于水下机器人等带宽受限场景进行视频流传输

该项目充分利用了 Rockchip 的硬件加速能力,实现了从摄像头采集、色彩空间转换、H.264 编码到网络传输的全链路优化。

🚀 核心特性

  • V4L2 采集:直接操作底层 Video4Linux2 接口,获取原始 YUYV 图像数据。
  • 硬件加速转换 (RGA):使用 Rockchip RGA (2D Graphic Acceleration) 进行格式转换(YUYV -> NV12)和缩放。
  • 板载AI算力 (NPU):集成 Rockchip NPU (Network Process Unite),利用6 Tops算力进行硬件加速。
  • 硬件编码 (MPP):集成 Rockchip MPP (Media Process Platform),实现 H.264 硬件编码。
  • UDP 低延迟传输:通过原始 UDP Socket 发送 H.264 码流,极大减少传输开销。

🛠️ 硬件与环境要求

  • 硬件平台:Orange Pi 5 / 5 Pro / 5 Plus (基于 RK3588/RK3588S)
  • 操作系统:Ubuntu 20.04 / 22.04 (Rockchip BSP)
  • 依赖库:
    • libv4l-dev
    • librga-dev (Rockchip RGA)
    • librockchip-mpp-dev (Rockchip MPP)
    • opencv (可选,目前仅用于测试各模块效果)

📂 项目结构

.
├── CMakeLists.txt                  # CMake文件
├── inc/                            # 头文件
│   ├── dma_utils.h                 # DMA Buffer 管理
│   ├── mpp_encoder.h               # MPP 编码封装类
│   └── v4l2_utils.h                # V4L2 操作封装
├── src/                            # 源代码
│   ├── main.cpp                    # 主程序入口 (采集->RGA->MPP->UDP)
│   ├── postprocess.cc              # 官方:后处理程序
│   ├── yolo_detector.cpp           # 目标检测封装类
│   └── mpp_encoder.cpp             # MPP 编码实现
├── utils/                          # 辅助文件
│   ├── dma_utils.cpp               # 实现 dma-heap 内存分配
│   └── v4l2_utils.c                # V4L2 采集实现
├── python_demo/                    # python demo
│   ├── yolov5_rknn.py              # rknn的python demo
│   └── yolov5_ROS.py               # rknn集成ROS demo
├── model/                          # 模型文件
│   ├── yolov5s.rknn                # rknn转化模型文件
│   └── coco_80_labels_list.txt     # 模型标签文件
├── .gitignore                      # git辅助文件
└── README.md                       # 说明文档

⚙️ 编译与构建

确保你的系统环境已安装必要的开发库。

# 1. 创建构建目录
mkdir build
cd build

# 2. 生成 Makefile
cmake ..

# 3. 编译
make -j4

🚀 运行指南

1. 接收端配置 (PC端)

在运行板子上的程序前,请先在 PC 端准备好接收工具。你可以使用 ffplay (FFmpeg 组件) 来播放。

PC端命令 (Windows/Linux):

# -f h264: 指定格式为 H.264
# -i udp://0.0.0.0:8888: 监听本地 8888 端口
# -fflags nobuffer: 禁用缓冲区以降低延迟
# -flags low_delay: 低延迟模式

ffplay -f h264 udp://0.0.0.0:8888     -fflags nobuffer     -flags low_delay     -framedrop     -strict experimental     -probesize 32     -analyzeduration 0     -sync ext

2. 发送端配置 (Orange Pi)

修改 src/main.cpp 中的目标 IP,将其指向你的 PC:

#define DEST_IP   "192.168.13.xxx" // <--- 修改为你 PC 的 IP 地址
#define DEST_PORT 8888            // <--- 确保没有被防火墙拦截

3. 开始推流

在板子上执行编译好的程序:

cd build
sudo ./bricsbot_vision

如果一切正常,你应该能在 PC 上看到来自摄像头的实时画面,且延迟极低。

📝 关键参数说明

在 src/main.cpp 中可以调整以下宏定义:

  • DST_WIDTH / DST_HEIGHT: RGA 输出和 MPP 编码的分辨率(默认 640x640)。
  • UDP_MTU: UDP 分包大小(默认 1024),建议小于 MTU 1500。

在 src/mpp_encoder.cpp 中可以调整编码参数:

  • bps (Bitrate): 目标码率,当前设置为 2Mbps ~ 3Mbps。
  • rc:mode: 码率控制模式 (CBR 固定码率)。

⚠️ 常见问题排查

  1. PC 端收不到画面:

    • 检查 PC 的防火墙是否允许 UDP 8888 端口。
    • 检查 main.cpp 中的 DEST_IP 是否填写正确。
    • 确保 PC 和开发板在同一个局域网网段。
  2. 画面绿屏或花屏:

    • 检查 MPP 的 stride (跨距) 设置。RK3588 通常要求宽和高对齐到 16 或 32。
    • 检查 RGA 转换时的格式是否设置为 RK_FORMAT_YCbCr_420_SP (即 NV12)。
  3. Permission Denied (权限错误):

    • 操作 /dev/video0 和 /dev/dma_heap 通常需要 root 权限,请使用 sudo 运行。

=============== End