GStreamer 1、摄像头节点subdev和video特性/dev/videoX/dev/v4l-subdevX用户主要用途捕获视频/图像数据配置传感器、ISP等底层参数操作对象整个摄像头实例应用层摄像头内部子设备驱动层操作mmap/read/writeioctl设置格式/曝光/增益数据流有图像数据流无图像数据流只有控制命令谁通常使用应用程序如相机App、OpenCV驱动程序开发者、高级调优工具如media-ctl、v4l2-subdev2、gstreamer推流命令udpgst-launch-1.0 v4l2src device/dev/videoX io-modedmabuf ! video/x-bayer, width1280, height1024, formatrggb ! bayer2rgb ! videoconvert ! video/x-raw, formatNV12, width1280, height1024 ! jpegenc ! multipartmux boundaryspionisto ! rndbuffersize max65000 ! udpsink syncfalse clients127.0.0.1:8000serverhttp://开发板IP:8000/jpeg工具名称所属模块源码路径在模块仓库中的位置gst-device-monitor-1.0gst-plugins-basetools/gst-device-monitor.cgst-discover-1.0gst-plugins-basetools/gst-discoverer.cgst-inspect-1.0gstreamer核心tools/gst-inspect.cgst-launch-1.0gstreamer核心tools/gst-launch.cgst-play-1.0gst-plugins-basetools/gst-play.cgst-stats-1.0gstreamer核心tools/gst-stats.cgst-transcoder-1.0gst-transcoder独立仓库tools/gst-transcoder.cgst-typefind-1.0gstreamer核心tools/gst-typefind.c模块官方仓库地址gstreamer核心https://gitlab.freedesktop.org/gstreamer/gstreamer/gst-plugins-basehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/gst-transcoderhttps://github.com/pitivi/gst-transcoder[摄像头]采集原始Bayer图像 (每秒30帧)│▼[GStreamer]去马赛克(RGB) → 色彩空间转换(NV12) → JPEG压缩每帧变成一个JPEG文件 (约20-50KB)│▼[multipartmux]给每个JPEG加上头尾:--spionisto\r\nContent-Type: image/jpeg\r\nContent-Length: N\r\n\r\n[数据]\r\n│▼[rndbuffersize udpsink]切成≤65KB的UDP包发往127.0.0.1:8000│▼[server-8000.js UDP接收]收到UDP包提取JPEG数据存为currentFrame│▼[server-8000.js HTTP推送]浏览器连接后循环将currentFrame包装成multipart格式推送│▼[浏览器]接收multipart流解码JPEG逐帧显示→ 用户看到实时视频画面