🎬 多路视频流 GStreamer
同步处理实战
📘 30章 · 从入门到项目
01
GStreamer概述
核心概念
什么是GStreamer · bin/element/pad/buffer/caps · 视频处理优势
02
开发环境搭建
工具链
Linux安装 · Gst-Python · gst-inspect/gst-launch 验证
03
第一个Pipeline
状态机
视频播放Pipeline · NULL→READY→PAUSED→PLAYING · 总线消息
04
多路视频源基础
源管理
v4l2src/filesrc/videotestsrc · 多路启动与停止控制
05
视频格式与Caps协商
Caps详解
RGB/YUV/NV12 · 协商过程 · 手动设置Caps
06
视频帧率控制
videorate
帧率概念 · videorate · 帧率转换同步 · PTS/DTS管理
07
视频分辨率缩放
videoscale
缩放策略 · 保持宽高比 · 性能考量
08
色彩空间转换
videoconvert
转换原理 · 常见场景 · 性能优化
09
多路视频合成基础
videomixer
videomixer介绍 · 合成原理 · 输入pad配置 · 输出分辨率
10
videomixer高级配置
位置/透明
x/y坐标 · width/height · alpha透明度 · z-order控制
11
多路视频布局设计
布局模式
2x2 · 1+3 · 画中画 · 动态调整 · 平滑过渡
12
视频叠加文本
timeoverlay
timeoverlay/textoverlay · 动态文本 · 字体样式
13
视频叠加图片
gdkpixbufoverlay
PNG/JPEG叠加 · 位置缩放 · 动态切换图片
14
视频录制与存储
filesink
编码器x264enc/vp8enc · mp4/avi/mkv · 分段录制
15
视频推流基础
RTSP
rtspclientsink · SDP文件 · 推流参数配置
16
RTSP服务器搭建
gst-rtsp-server
创建挂载点 · 动态媒体工厂 · 客户端管理
17
多路视频同步原理
GstClock
时钟同步 · 时钟选择 · 不同步问题 · 时间戳对齐
18
实时同步策略
live-source
队列元素 · 缓冲策略 · 丢帧策略
19
时间戳管理
PTS/DTS
偏移校正 · 连续性检查 · 时间戳重映射
20
多线程处理
线程模型
GStreamer线程模型 · queue多线程 · 安全与调优
21
Pipeline动态修改
动态元素
添加/移除元素 · 动态pad链接 · 状态原子性
22
事件与消息处理
GstEvent
事件类型 · 消息类型 · 自定义事件 · 传播机制
23
错误处理与恢复
优雅降级
常见错误 · 回调处理 · Pipeline自动重启
24
性能监控与调优
fpsdisplaysink
CPU/内存监控 · 延迟测量 · 瓶颈定位
25
硬件加速
VAAPI/CUDA
VAAPI · vaapisink/vaapidecode · NVIDIA加速 · 编解码器
26
多路视频拼接实战
2x2/8路
4路2x2拼接 · 8路拼接 · 动态布局 · 性能优化
27
画中画(PiP)实战
子画面
主/子画面配置 · 位置动态调整 · 切换动画 · 多级PiP
28
视频矩阵切换
无缝切换
矩阵切换概念 · 无缝切换 · 淡入淡出/滑动 · 控制接口
29
多路视频录制系统
同步录制
多路独立录制 · 同步录制 · 文件管理 · 状态监控
30
综合项目实战
监控系统
需求分析 · 架构设计 · 完整代码 · 测试部署