通用调试和性能分析
通用调试和性能分析
5.1 开启日志
GStreamer 日志等级如下:
| 等级 | 数值 |
|---|---|
| ERROR | 1 |
| WARNING | 2 |
| FIXME | 3 |
| INFO | 4 |
| DEBUG | 5 |
| LOG | 6 |
| TRACE | 7 |
设置全局日志等级:
GST_DEBUG=2 gst-play-1.0 test.mp4为不同模块设置不同等级:
GST_DEBUG='2,decodebin:5,v4l2*:4' gst-play-1.0 test.mp45.2 查看帧率
fpsdisplaysink 可以统计视频帧率,并将画面转交给真正的 Video Sink:
GST_DEBUG=fpsdisplaysink:7 \
gst-launch-1.0 videotestsrc \
! fpsdisplaysink video-sink=autovideosink \
signal-fps-measurements=true text-overlay=falsesync=false 可用于测试 Pipeline 的最大吞吐量,但会关闭时钟同步,不代表正常播放行为。
GST_DEBUG=fpsdisplaysink:7 \
gst-launch-1.0 videotestsrc \
! fpsdisplaysink video-sink=fakesink \
signal-fps-measurements=true text-overlay=false sync=false5.3 导出 Pipeline 图
export GST_DEBUG_DUMP_DOT_DIR=/tmp
gst-play-1.0 test.mp4
ls -l /tmp/*.dot在安装了 Graphviz 的主机上转换为图片:
dot pipeline.dot -Tpng -o pipeline.png一次运行可能生成多个 DOT 文件,分别对应 Pipeline 在不同状态下的结构。
5.4 通用排障流程
- 用
gst-inspect-1.0确认插件存在,并检查 Pad、Caps 和属性。 - 用
gst-discoverer-1.0或v4l2-ctl确认输入格式。 - 为
gst-launch-1.0增加-v,查看协商后的 Caps。 - 将复杂 Pipeline 简化为
Source → Parser/Decoder → fakesink。 - 再逐步加入格式转换、编码、显示、音频和网络分支。
- 在
tee、Demuxer 或动态 Pad 后增加queue,排除分支阻塞。 - 使用
GST_DEBUG定位加载插件、状态切换和协商错误。 - 使用
fpsdisplaysink区分输入、编解码、处理和显示瓶颈。 - 导出 DOT 图确认实际创建的 Element 和连接关系。

