gstreamer查看element关系图

使用gstreamer API实现功能时,我一般先用gst-launch-1.0验证可行性和效果,然后再编码实现,这个过程中需要分析下各element的连接关系,而gstreamer提供了一套机制生成dot文件,方便我们查看各个阶段的dot图。

命令行

命令行只需要设置环境变量GST_DEBUG_DUMP_DOT_DIR即可,例如:

GST_DEBUG_DUMP_DOT_DIR=. gst-launch-1.0 filesrc location=sintel_trailer-480p.ogv ! decodebin name=decode ! videoscale ! "video/x-raw,width=320,height=240" ! x264enc ! queue ! mp4mux name=mux ! filesink location=320x240.mp4 decode. ! audioconvert ! avenc_aac ! queue ! mux.

会生成pipeline状态转换时的dot文件

ls *.dot
0.00.00.338833216-gst-launch.NULL_READY.dot      0.00.05.754936518-gst-launch.PLAYING_PAUSED.dot
0.00.00.568036395-gst-launch.READY_PAUSED.dot    0.00.05.760536591-gst-launch.PAUSED_READY.dot
0.00.00.570132427-gst-launch.PAUSED_PLAYING.dot

dot文件需要用dot命令转换为png,svg等格式的图片方便查看,dot命令通过graphviz来安装

sudo apt install graphviz

转换为图片

dot -Tsvg 0.00.00.570132427-gst-launch.PAUSED_PLAYING.dot -o test.svg
dot -Tpng 0.00.00.570132427-gst-launch.PAUSED_PLAYING.dot -o test.png

C代码

先可以通过运行命令时,设置环境变量GST_DEBUG_DUMP_DOT_DIR,或者代码里面导入环境变量。然后在需要的时候调用GST_DEBUG_BIN_TO_DOT_FILE() 或者GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()来生成dot文件,一般是在状态转换时调用即可。

posted @ 2023-05-13 18:45  thammer  阅读(99)  评论(0编辑  收藏  举报