GStreamer筆記

sink pad—> bin#[GstElement]#bin —>src pad 如此多個連成pipeline
1、就是元件GstElement放箱櫃裏(插件),通過pads連接,組成一條管道處理流媒體
2、Sourc Element:提供數據 — Filter Element:處理數據 — Sink Element:終端
3、創建Element用GstElementFactory
不同的工廠名字生產不同功能的Element
1)建工廠對象:factory = gst_element_factory_find (“mad”)
2)建元件對象:element = gst_element_factory_create (factory, “decoder”);
3)不用必須刪掉釋放內存:gst_element_unref (element);
4)GstElement的父是GObject,繼承了name這一屬性
gst_object_set_name()和gst_object_get_name()函數可以設置和讀取GstElement對象的名稱屬性
pads = gst_element_get_pad_list (element);元件所連接的所有pad
gst_pad_get_parent()可以獲得指定襯墊所屬的元件
藉助數據結構_GstCaps讓pad描述Element所具有的能力
GstCaps *caps;
caps = gst_pad_get_caps (pad) 每個pad對應Element的一種能力
4、可以根據名字獲得Element的指定pad,也可以查詢此Element都連接着哪些pad,pad也可以設定名字和讀取名字,獲取它是輸出還是輸入pad。 sink pad輸入 src pad輸出

5、別人自己寫的gstreamer_learn
6、
GstFileSrc-從文件中讀取數據:視頻數據或圖像。
GstH264Parse-解析傳入的H264流。對於H265編解碼器,請使用H265Parse。
GstRtpH264Pay-將H264編碼的有效負載轉換爲RTP數據包(RFC 3984)。
GstUDPSink-將UDP數據包發送到網絡。與RTP有效負載(GstRtpH264Pay)配對時,它可以實現RTP流。
GstCapsFilter-在不修改數據的情況下限制數據格式。
GstV4l2Src-從v4l2設備捕獲視頻。
GstQTMux-將流(音頻和視頻)合併到QuickTime(.mov)文件中。
GstFileSink-將傳入數據寫入本地文件系統中的文件。
GstURIDecodeBin-將數據從URI解碼到原始媒體中。它選擇可以處理給定“ uri”方案的源元素,並將其連接到解碼器。

what is GStreamer
https://blog.csdn.net/loubiao9212/article/details/95076595


詳細,裏面還有一個播放音頻的實例
1、元件Elements—它組成管道pipeline來完成播放錄音等任務
1)源元件從磁盤或者聲卡讀取數據,僅產生數據,不接收數據
2)過濾器(Filters):能收能發,包括音量元件(filter)、視頻轉換器 (convertor)、Ogg分流器或者 Vorbis 解碼器
3)接收元件是末端:寫磁盤,利用聲卡播放聲音,視頻輸出
2、箱櫃(Bins)是一個可以裝載元件(element)的容器。
管道是箱櫃的一種,可以操作裏面的所有元件,在單獨的線程裏運行。數據在裏面流動
3、襯墊(Pads)—元件的鏈接需要它,這裏的數據是指buffers和events
數據向元件以外流出需要source襯墊
元件接收數據需要 sink pads
4、總線(Bus):輪詢,有新消息,呼叫相應的回調函數來完成任務

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