AGX Xavier 搭建360环视教程【一、先确认方案】

设备默认自带 NVIDIA 硬件编解码 能力(NVDEC /NVENC ),但是需要你在 OpenCVFFmpeg 里正确启用 + 调通 GStreamernvmpi,才真正能用起来!

这里的硬解码是核心:

Jetson 平台的硬解码,要么走 GStreamer(nvv4l2)要么走 RidgeRun 的 nvmpi(FFmpeg 插件),否则就只能 CPU 软解。

推荐的技术路线(实战稳定)

【1】 RTSP → GPU 硬解(输入)

选项 1:GStreamer nvv4l2(官方推荐)

复制代码
gst-launch-1.0 rtspsrc location=rtsp://... ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! appsink

然后在 OpenCV 中用

复制代码
 cv::VideoCapture("your_pipeline", cv::CAP_GSTREAMER)

直接拿到。

选项 2:FFmpeg + nvmpi

如果GStreamer 用不了(极少数),就自己编 nvmpi + FFmpeg。


【2】 remap + 拼接(处理)

  • 保留 OpenCV remap

  • 若想用 GPU 做 remap ,需要用OpenCV CUDA 模块cv::cuda::remap),

    但要编译时 WITH_CUDA=ONWITH_CUBLAS=ON


【3】 拼接后 → RTSP 推流(输出)

✅ 用 FFmpeg 的 libx264(CPU 编码) → ffmpeg -f rawvideo -pix_fmt bgr24 -i pipe:0 ...

✅ 用 GStreamer**nvvidconv + nvv4l2h264enc**(GPU 编码)→ RTSP server


⚡ 必须重装的组件

1️⃣ OpenCV 必须重新编译

复制代码
cmake \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D WITH_OPENGL=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
..

🚩 一定要确认 WITH_GSTREAMER=ONWITH_CUDA=ON

2️⃣ FFmpeg(可选)

如果你走 nvmpi 路线,要重新编译 FFmpeg:

复制代码
./configure --enable-nonfree --enable-nvmpi --enable-shared ...

🎯 推荐实战路线(总结)

✅ 1)输入 → GStreamer(nvv4l2)GPU 硬解 → OpenCV VideoCapture

✅ 2)处理 → OpenCV CUDA(可选)做 remap → 拼接

✅ 3)输出 → 用 FFmpeg/GStreamer nvv4l2h264enc 硬编码 → rtsp-simple-servermediamtx


🚦 一句话:

Jetson NX 在 JetPack 4.5 下,最稳的组合就是:GStreamer 负责硬解码 + 硬编码,OpenCV 只做逻辑,不做解码/编码。



ffmpeg编译安装时容易碰到问题。

✅ 1️⃣ 「解码 → 畸变矫正 → 拼接」阶段

这个阶段:

  • GStreamer + nvv4l2decoder:GPU 硬解码

  • OpenCV CUDA remap:GPU 做 map1/map2 畸变矫正

  • OpenCV 拼接、叠车图、组合画面

这一步,确实是纯 GStreamer + OpenCV CUDA,不需要 FFmpeg 来 解码


✅ 2️⃣ 「结果视频流 → 通过 RTSP 发布」阶段

这里就有 2 种常见选择:

  • 选项 A:用 FFmpeg(popen)把拼接后图像写到 stdin,然后推给 RTSP 服务端

    • 简单粗暴,依赖 FFmpeg 做推流 mux+encode

    • 已经在你的 main.cpp 里用了

    • 优点:最容易落地,FFmpeg 支持推 RTSP、RTMP 都稳

    • 缺点:FFmpeg 在 Jetson 上如果没启用硬编(nvenc),那还是 CPU 做 H.264 编码

  • 选项 B:全链路用 GStreamer 推流

    • GStreamer 可以用 appsrc 把你 CPU/GPU 的拼接帧丢回管道,然后 nvvidconv + nvv4l2h264enc 做 GPU 编码,rtspclientsink 或 rtpbin/udpsink 做流化。

    • 优点 :全流程硬编(nvv4l2h264enc),CPU 压力最低

    • 缺点 :写 C++ GStreamer appsrc 需要自己维护 GstPipelineGstAppSrc、buffer push,写起来比 popen(ffmpeg) 要麻烦不少,且需要调试好 RTSP session


所以:

  • 之前说 「不用 FFmpeg」 是指:「解码阶段不用 FFmpeg」,因为 GStreamer 已经硬解码了。

  • 如果要纯 GStreamer 全链路 ,就要把 FFmpeg popen 部分换成 GStreamer 的 appsrc + nvv4l2h264enc + rtspclientsink



✅ 1️⃣ 【方案 A】直接用 GStreamer 拉取 RTSP + nvv4l2decoder

流程

复制代码

scss

复制编辑

(海康摄像头 RTSP) → GStreamer → rtspsrc → rtph264depay → nvv4l2decoder → CUDA Mat

  • RTSP 协议是海康自带的。

  • GStreamer 自带 rtspsrc 可以直接拉流。

  • Jetson 的 nvv4l2decoder 是最成熟的硬件解码插件,稳定高效。

  • 后续直接转成 cv::cuda::GpuMat 处理 remap,拼接也走 CUDA。

优点

  • 简单、干净,完全不依赖厂商 SDK(HCNetSDK)

  • 全硬件解码,零 CPU 开销

  • 最好调试,最多人用,资料多

  • 维护成本低

缺点

  • 需要网络 RTSP 稳定(丢包要注意)

  • 如果摄像头不是 RTSP 输出,而是专有协议,则必须 SDK


✅ 2️⃣ 【方案 B】海康 SDK (HCNetSDK)+ PlayM4 软解码

流程

复制代码

scss

复制编辑

(海康摄像头) → HCNetSDK → PlayM4 → YUV → OpenCV

  • 走海康私有协议(比如海康的 PS 流、专用登录等)。

  • PlayM4 一般只能软解码(除非用自研插件配合硬解码)。

  • 你要自己维护多路 SDK 线程、缓冲、丢帧逻辑。

优点

  • 如果 RTSP 不稳定(比如公网)、或者要高级控制(云台、录像调度),必须用 SDK。

  • 一些场景下比纯 RTSP 更可控。

缺点

  • PlayM4 不支持硬解码,CPU 压力大。

  • 要自己拼接 OpenCV 流程。

  • 移植麻烦,Jetson 也没专门的 ARM64 优化。

  • 不支持 GStreamer pipeline。


✅ 3️⃣ 【方案 C】工业场景高阶方案:ONVIF 或 RTSP + 边缘推流器

还有人会:

  • 在相机侧用边缘设备先拉流 → 本地转码(GStreamer/FFmpeg)→ 统一推给 RTSP 服务端 → Jetson 从统一 RTSP 拉。

  • 这样可以做转码(例如把所有流转成相同分辨率/码率),稳定性最好。


✅ 4️⃣ 【最佳实践:实际生产怎么选?】

1️⃣ 若摄像头支持 RTSP(海康都支持) → 优先选 GStreamer + rtspsrc + nvv4l2decoder

2️⃣ 若要跨公网 + 要登录控制 + 云台 + 录像 → 用海康 SDK 但只能软解(除非自己改)

3️⃣ 若要极致可控 → 相机接入侧加推流器(或者 NVR 先做聚合)


🔑 结论

环视、低延时、单机 Jetson:一定优先直接 RTSP + GStreamer + nvv4l2decoder!

  • 最少依赖,最少功耗,GPU 干活,CPU 只拼接。

  • SDK 只在需要云台控制或特殊功能时使用。

✅ 【GStreamer 多路 RTSP 拉流 + nvv4l2decoder 硬解码 → CUDA remap → 拼接 → appsrc 回推 RTSP】的 全套 Jetson 版 C++。

相关推荐
MM_MS12 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
m0_6501082412 小时前
VGGT-Long:突破千米级长 RGB 序列单目 3D 重建的极限
自动驾驶·机器人导航·vggt·3d视觉基础模型·千米级单目3d重建·通用模型·分块-对齐-闭环-全局优化
沫儿笙18 小时前
ABB焊接机器人混合气体节气方案
人工智能·机器人
gorgeous(๑>؂<๑)18 小时前
【中科院-张启超组-AAAI26】WorldRFT: 用于自动驾驶的带强化微调的潜在世界模型规划
人工智能·机器学习·自动驾驶
GAOJ_K21 小时前
丝杆模组精度下降的预警信号
人工智能·科技·机器人·自动化·制造
TMT星球1 天前
星动纪元携人形机器人家族亮相CES 2026,海外业务占比达50%
大数据·人工智能·机器人
数说星榆1811 天前
在线高清泳道图制作工具 无水印 PC
大数据·人工智能·架构·机器人·流程图
乾元1 天前
现场运维机器人的工程化落地——移动探针采集 + AI 诊断,在真实网络中的实现路径
运维·网络·人工智能·架构·机器人·自动化
Lun3866buzha1 天前
水下管道巡检机器人对潜艇的检测与识别系统-yolox_l_8xb8-300e_coco实现
机器人
2501_936146041 天前
【计算机视觉系列】:基于YOLOv8-RepHGNetV2的鱿鱼目标检测模型优化与实现
yolo·目标检测·计算机视觉