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文件,一般是在狀態轉換時調用即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章