不只是编译:在Ubuntu 20.04上为QGC 4.4集成GStreamer,实现RTSP视频流接收的完整配置流程

张开发
2026/5/4 3:19:59 15 分钟阅读
不只是编译:在Ubuntu 20.04上为QGC 4.4集成GStreamer,实现RTSP视频流接收的完整配置流程
在Ubuntu 20.04上为QGC 4.4深度集成GStreamer从源码编译到RTSP视频流实战当无人机开发者需要在地面站软件中实时查看机载摄像头画面时RTSP视频流接收功能往往成为刚需。本文将带您完成从QGroundControlQGC源码编译到GStreamer集成、最终实现RTSP流接收的完整技术闭环。不同于简单的编译教程我们更关注如何验证功能可用性以及解决实际开发中的典型问题。1. 环境准备构建QGC开发的基石Ubuntu 20.04 LTS作为长期支持版本其自带的软件包版本与QGC 4.4的兼容性值得信赖。但想要完美运行视频功能仍需特别注意各组件的版本匹配Qt 5.15.2QGC 4.4官方推荐的Qt版本GStreamer 1.16视频处理框架的核心组件开发工具链包括git、构建工具等基础依赖建议在开始前执行以下命令确保系统更新sudo apt update sudo apt upgrade -y sudo apt install build-essential git cmake ninja-build -y1.1 Qt安装的陷阱与避坑指南从Qt官网获取在线安装器时国内用户常遇到下载速度慢的问题。这里有个小技巧使用清华镜像源加速下载wget https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/qt-unified-linux-x64-online.run chmod x qt-unified-linux-x64-online.run ./qt-unified-linux-x64-online.run安装时需特别注意勾选Qt 5.15.2主组件额外选择以下子组件Qt ChartsQt LocationQt MultimediaQt Quick 3D务必安装Qt Creator 16.0.1配套开发环境提示如果安装界面找不到Qt 5.15.2点击右侧Archive筛选即可显示历史版本2. GStreamer全家桶不只是基础安装虽然Ubuntu 20.04自带GStreamer 1.16但要支持RTSP流接收必须补充安装以下插件包sudo apt install \ gstreamer1.0-tools \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav \ gstreamer1.0-qt5各插件包的功能定位插件包关键功能RTSP必需性plugins-base基础编解码器、网络组件★★★★plugins-good高质量编解码器、RTSP协议支持★★★★★plugins-bad实验性功能可能包含专利组件★★★plugins-ugly含专利算法但实用的编解码器★★libavFFmpeg提供的编解码支持★★★★qt5Qt与GStreamer的集成组件★★★★★对于需要二次开发的用户还应安装开发包sudo apt install \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libgstreamer-plugins-good1.0-dev3. QGC源码获取与初始化使用git获取QGC 4.4稳定版源码时推荐使用深度克隆以获取完整提交历史git clone --depth1 -b Stable_V4.4 https://github.com/mavlink/qgroundcontrol.git cd qgroundcontrol git submodule update --init --recursive常见问题处理子模块更新失败尝试修改.gitmodules中的URL为国内镜像网络超时设置git代理或使用SSH方式克隆4. Qt Creator中的编译艺术用Qt Creator打开qgroundcontrol.pro文件后建议进行以下配置优化构建套件选择确保使用Qt 5.15.2配套的GCC工具链检查qmake路径是否正确指向5.15.2版本构建参数调整DEFINES QT_QUICK_CONTROLS_2_STYLEMaterial CONFIG link_pkgconfig PKGCONFIG gstreamer-1.0解决典型编译错误patchelf缺失错误sudo apt install patchelfGL/gl.h缺失sudo apt install libgl1-mesa-dev多媒体插件加载失败 在Qt Creator的Projects→Run中添加环境变量GST_PLUGIN_PATH/usr/lib/x86_64-linux-gnu/gstreamer-1.05. RTSP功能验证从配置到实战编译成功后通过以下步骤验证RTSP流接收功能启动QGC在Qt Creator中点击运行或直接执行./staging/QGroundControl视频源配置进入Application Settings→Video选择视频源类型为RTSP Stream输入RTSP地址如rtsp://192.168.1.10:554/live诊断工具使用 在终端测试GStreamer管道是否正常工作gst-launch-1.0 playbin urirtsp://your_stream_url常见RTSP连接问题排查无视频画面 检查GStreamer插件是否完整安装gst-inspect-1.0 | grep rtsp延迟过高 尝试添加以下管道参数rtsp://... ! rtph264depay ! avdec_h264 ! videoconvert ! xvimagesink syncfalse花屏/卡顿 调整视频缓冲策略export GST_BUFFER_DURATION1000000006. 二次开发接口解析QGC的视频处理架构主要涉及以下几个关键类VideoReceiver(src/VideoReceiver/VideoReceiver.cc)核心视频接收处理类支持RTSP、UDP等多种协议VideoStreaming(src/VideoStreaming/VideoStreaming.cc)视频流管理入口提供开始/停止流接口GStreamer初始化(src/VideoStreaming/GStreamer.cc)初始化GStreamer环境管道构建与错误处理典型开发场景示例——自定义视频叠加层// 在VideoStreaming.cc中添加OSD绘制 void VideoStreaming::paintOverlay(QPainter* painter) { painter-setPen(Qt::white); painter-drawText(20, 40, 无人机ID: _vehicleId); // 添加更多自定义绘制逻辑... }7. 性能优化实战技巧经过多次实测我们总结出以下提升视频处理性能的关键点硬件加速配置sudo apt install va-driver-all vainfo export GST_VAAPI_ALL_DRIVERS1管道优化参数rtsp://... ! queue max-size-buffers0 max-size-time0 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! glimagesinkQGC专属优化 修改qgroundcontrol.pri文件QMAKE_CXXFLAGS -marchnative CONFIG optimize_full在NVIDIA Jetson平台上的特别优化export GST_GL_APIgles2 export GST_GL_PLATFORMegl

更多文章