ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

QGroundControl 视频流与录像设置完全指南:从视频源接入到本地存储配置

QGroundControl 视频流与录像设置完全指南:从视频源接入到本地存储配置 无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载导读本文围绕 QGroundControlQGC用户指南中的 Video 设置文档系统讲解地面站视频流RTSP / UDP / TCP / MPEG-TS / USB 相机与本地录像的全部配置项。文中每个参数都结合仓库中的 Video.SettingsGroup.json 元数据、VideoSettings.cc 实现与 Video.SettingsUI.json 界面绑定进行源码级印证。读完本文你将能够独立完成一条无人机图传链路的接入、按需调整解码与延迟策略并正确配置录像文件的格式与存储上限。一、设置入口与整体框架在 QGC 中视频相关设置位于Settings → Video页面对应的 UI 定义文件为 Video.SettingsUI.json其分组结构为Video Source视频源选择Connection连接地址随视频源类型动态切换Settings显示与解码相关高级选项Local Video Storage本地录像存储该页面背后由 VideoSettings继承SettingsGroup的 Fact 容器驱动每个设置项都是一个可通过 QML 双向绑定的Fact。从界面绑定文件可见页面通过QGroundControl.settingsManager.videoSettings暴露给 QML同时依赖QGroundControl.videoManager提供的autoStreamConfiguredMAVLink 相机自动配置状态和isStreamSource是否为网络流属性来决定各控件的显示/启停条件。视频管线的核心运行对象是 VideoManager它负责创建VideoReceiver、响应设置变化并重启管线、管理录像生命周期。二、Video Source选择视频流来源在Video Source分组中videoSource设置项决定视频流的接入方式。用户指南中列出的可选项为Video Stream Disabled禁用视频流默认值RTSP Video StreamUDP h.264UDP h.265TCP-MPEG2MPEG-TSIntegrated CameraUSB/UVC 相机而实际上VideoSettings.cc 中构建的可选列表比文档更丰富在通用来源之外还包含3DR Solo (requires restart)、Parrot Discovery、Yuneec Mantis G以及Herelink AirUnit / Herelink Hotspot根据QGC_HERELINK_AIRUNIT_VIDEO编译宏二选一随后通过UVCReceiver::getDeviceNameList()动态枚举系统已连接的 USB 相机设备并逐个追加为可选来源。这些历史机型与厂商专用来源3DR、Parrot、Yuneec、Herelink在 VideoSettings.h 中有对应的静态常量定义。两个值得注意的动态行为无视频能力时自动隐藏若编译时未启用 GStreamer 视频支持且系统无 UVC 设备videoSourceList为空此时会置入No Video Available并把整个设置组设为setUserVisible(false)隐藏页面。失效来源自动回退读取已保存的videoSource时若其值不再存在于当前枚举中例如上次使用了已拔出的 UVC 相机_videoSourceFact会自动回退到默认值见 VideoSettings.cc。三、Connection按来源配置连接地址Connection分组的可用控件随videoSource动态切换由 Video.SettingsUI.json 中的showWhen表达式控制——三种 URL 各自只在对应的来源被选中时显示设置项适用来源示例值默认值rtspUrlRTSP Video Streamrtsp://192.168.42.1:554/live空字符串tcpUrlTCP-MPEG2192.168.143.200:3001空字符串udpUrlUDP h.264 / UDP h.265 / MPEG-TS0.0.0.0:56000.0.0.0:5600三个 URL 均以字符串类型存储见 Video.SettingsGroup.json。UDP/MPEG-TS 来源共用udpUrl地址 端口默认绑定0.0.0.0:5600这也是 PX4 等飞控图传的默认 UDP 端口RTSP 需要完整的rtsp://前缀地址TCP 则直接填写IP:端口。在 VideoSettings.cc 的streamConfigured()方法中可以清楚地看到配置是否就绪的判定逻辑若 MAVLink 相机已自动配置流VideoManager::instance()-autoStreamConfigured()则直接视为就绪否则依次检查——UDP/RTSP/TCP/MPEG-TS 来源必须填写了非空的对应 URLHerelink 与 UVC 来源则只要被选中即视为就绪。该状态通过streamConfiguredChanged信号实时广播每次 URL 或来源变化都会触发_configChanged供 QML 界面与录像按钮判断是否可用。四、Settings显示与解码高级配置Settings分组见 Video.SettingsUI.json集中了影响画面显示、解码性能与断流恢复的选项其中多数仅对网络流isStreamSource显示。4.1 Aspect Ratio画面宽高比aspectRatio以宽/高浮点形式存储默认值1.777777即 16:9支持 6 位小数精度。将其设为0.0可关闭缩放由播放组件按源帧自动探测。videoFitVideo Display Fit是配套的填充策略枚举0Fit Width、1Fit Height默认、2Fill、3No Crop见 Video.SettingsGroup.json。4.2 Low Latency Mode低延迟模式lowLatencyMode默认关闭。开启后GStreamer 的 RTP playout 缓冲延迟被置零、并禁用 RFC 4588 重传恢复机制以换取更小的玻璃到玻璃glass-to-glass延迟代价是在丢包或乱序网络中可能出现更多的花屏/坏帧见 Video.SettingsGroup.json。该开关变更会触发_restartAllVideos()重启全部视频管线VideoManager.cc。4.3 RTP jitter latencyRTP 抖动缓冲延迟这是界面上的进阶参数rtpJitterLatencyMs配置 RTP 抖动缓冲的播放延迟预算对应 GStreamer 的rtspsrc.latency/rtpjitterbuffer.latency取值范围0–2000 ms默认80 ms。默认值允许 RFC 4588 重传在播放截止前恢复丢失包当值低于40 ms时重传机制实际上失效。开启 Low Latency Mode 后该参数被忽略见 Video.SettingsGroup.json且 UI 中rtpLatencyVisible绑定会保证低延迟模式下隐藏该控件。修改该值同样通过重启管线生效VideoManager.cc。4.4 Auto-reconnect on stream loss断流自动重连rtspAutoReconnect默认开启当流看门狗超时或管线发生致命错误时接收端按指数退避1s → 30s自动重连关闭则退化为失败一次即放弃的旧行为。该选项是实时生效的——变更时直接对每个VideoReceiver调用setAutoReconnect()无需重启管线以便中断正在进行的退避重连见 VideoManager.cc。与之配套的rtspTimeout定义看门狗判定链路断开的等待时长单位秒最小值1默认8sVideo.SettingsGroup.json。4.5 Force video decoder priority强制解码器优先级forceVideoDecoder用于覆盖自动解码器选择枚举值定义在 Video.SettingsGroup.json枚举值含义0Default默认1Force software decoder8Force hardware decoder2Force NVIDIA decoder3Force VA-API decoder4Force DirectX3D 11 decoder5Force VideoToolbox decoder6Force Intel decoder7Force Vulkan decoder该设置标注qgcRebootRequired: true即修改后需重启 QGC 才生效。并非所有平台都提供全部选项_setForceVideoDecodeList()按操作系统裁剪枚举Android 移除 DirectX3D/VideoToolbox/VA-API/NVIDIA/IntelWindows 移除 VideoToolbox/VulkanmacOS/iOS 移除 DirectX3D/VA-API 等见 VideoSettings.cc后端初始化完成后pruneUnavailableDecoders()还会对照 GStreamer 注册表中实际可用的解码家族把当前机器上不存在的硬件解码选项从枚举中剔除若当前选中值被剔除则自动重置为 DefaultVideoSettings.cc由 VideoManager.cc 在_onBackendInitComplete中调用随后applyDecoderPriorities应用选择。这些设置仅在启用QGC_GST_STREAMING的构建中可见setUserVisible(kGstEnabled)。4.6 Force CPU video path强制 CPU 视频通路forceCpuVideoPath默认关闭。默认情况下硬件解码器产出的 GPU 帧DMABuf、GLMemory、D3D11、IOSurface、AHardwareBuffer会被直接导入 Qt 渲染线程实现零拷贝管线在 GPU 导入失败时本就会自动回退到 CPU 路径因此该开关主要用于排查坏驱动或调试。同样标注qgcRebootRequired: true。仓库在 VideoSettings.cc 中实现了旧版本gpuZeroCopyEnabled参数的自动迁移检测到旧键时按!gpuZeroCopy折算写入新键并清除旧键。此设置仅在存在 GPU 路径QGC_HAS_ANY_GPU_PATH时显示。4.7 其他进阶项源码独有界面可选Video conversion element overridevideoConversionElement覆盖 CPU 视频通路使用的色彩转换 GStreamer 元素。留空时自动探测优先 SoC 原生imxvideoconvert_g2d/nvvidconv否则回退videoconvert适合在 SoC 首选元素存在缺陷时指定替代工厂名下次流重启生效。Disable pixel-aspect-ratio normalizationdisablePixelAspectRatio跳过 CPU 通路中pixel-aspect-ratio1/1的 capsfilter。QGC 默认强制 PAR1/1 以避免非方形像素源部分 RTSP 相机、DVB几何变形但个别缺少VIDIOC_CROPCAP的 v4l2 驱动会在强制 PAR 时协商死锁可用此项规避Video.SettingsGroup.json。此外还有disableWhenDisarmedDisable Video Stream When Disarmed当飞行器解除武装时关闭视频流以节省带宽若有正在进行的录像也会一并停止Video.SettingsGroup.jsonstreamEnabled默认开启控制流的启停gridLines可在视频画面上叠加网格线Video.SettingsGroup.json。五、Local Video Storage本地录像存储5.1 录制格式Record File FormatrecordingFormat提供三种封装格式mp4枚举值2默认、mov1、mkv0。在 VideoManager.cc 中文件扩展名数组按同一顺序映射为{mkv, mov, mp4}startRecording()据此生成yyyy-MM-dd_hh.mm.ss.流名.扩展名格式的文件名如果当前格式非法isValidFileFormat校验失败会弹出Invalid video format defined提示VideoManager.cc。录像保存目录videoSavePath定义于应用级设置Video.SettingsGroup.json若为空则无法开始录像。5.2 自动删除与存储上限Auto-Delete Saved RecordingsenableStorageLimit默认关闭移动端默认开启开启后当 QGC 录制视频总量超过上限时自动删除最旧的录像。Max Storage UsagemaxVideoSize默认10240 MB10 GB移动端默认2048 MB最小值100单位 MB。VideoManager::_cleanupOldVideos()VideoManager.cc实现了完整的清理算法仅统计保存目录下三种录制扩展名的可读可写普通文件按修改时间排序累加总大小并以maxVideoSize * 1024²换算为字节只要总量仍大于等于上限就从最旧的文件开始逐个删除QFile::remove直到总量低于上限或目录清空。该清理在每次startRecording()之前执行保证新录像写入前预留空间。六、底层机制小结设置如何驱动管线从源码结构看视频设置与运行时的联动遵循一条清晰的链路设置即 Fact所有参数以 Fact 形式注册在 Video.SettingsGroup.json 中界面Video.SettingsUI.json与 CVideoSettings.cc共用同一元数据变更即重启VideoManager::init()将videoSource、udpUrl、rtspUrl、tcpUrl、lowLatencyMode、rtpJitterLatencyMs的rawValueChanged信号统一路由到_videoSourceChanged由_updateSettings把新值推送给每个VideoReceiver并精确重启一次管线VideoManager.ccrtspAutoReconnect则是例外走实时推送通道就绪判定streamConfigured()综合自动配置、来源类型与 URL 非空性给出结论驱动 UI 中录像按钮等控件的可用性平台差异收敛解码器枚举先按 OS 裁剪、再按运行时 GStreamer 注册表二次裁剪最终选择在_onBackendInitComplete中应用为解码优先级。七、快速配置参考以最常见的RTSP 图传链路 MP4 录制为例推荐的配置路径为Settings → Video在 Video Source 中选择RTSP Video Stream在 Connection 中输入完整地址如rtsp://192.168.1.10:8554/live保持rtspAutoReconnect开启以应对链路抖动按需调节rtpJitterLatencyMs默认 80 ms或开启Low Latency Mode换取更低延迟在 Local Video Storage 中将Record File Format设为mp4开启Auto-Delete Saved Recordings并设置合适的Max Storage Usage默认 10240 MB若画面花屏或驱动异常再考虑勾选Force CPU video path或修改Force video decoder priority两者均需重启 QGC。如需深入源码可依次阅读Video.SettingsGroup.json参数元数据、VideoSettings.cc来源枚举与配置判定、Video.SettingsUI.json界面绑定与显隐逻辑、VideoManager.cc管线重启、录像与自动清理。用户指南英文原文见 docs/en/qgc-user-guide/settings_view/video.md。赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐QGroundControl 视频显示与录像实战指南视频切换器、GCS 本地录制与机载相机录制QGroundControl 视频显示与录像实战指南视频切换器、GCS 本地录制与机载相机录制 本篇技术指南以 QGroundControlQGCFly无人机智能硬件5分钟把电子书变成有声书abogen新手实操手册5分钟把电子书变成有声书abogen新手实操手册 abogen是一款开源有声书生成工具把EPUB、PDF和纯文本转成带同步字幕的有声书基于Kokoro 8AI 应用语音音频媒体生成本地部署Obsidian插件本地化革命如何用智能翻译引擎打造完美中文工作空间Obsidian插件本地化革命如何用智能翻译引擎打造完美中文工作空间 还在为Obsidian插件的英文界面而困扰吗想象一下打开你最喜爱的笔记工具所有插件AI 应用开发工具大模型上一篇Jupyter 贡献者指南全面参与文档、代码与社区建设的实战路径下一篇aiohttp 表单字段数量上限 client_max_fields 与快速 urlencoded 解析机制详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表