GStreamer学习笔记 – 基础名词概念篇

名词 概念 Elements An element is the most important class of objects in GStreamer. Pads Pads are an element’s input and output, where you can connect other elements. A pad type is defined by two properties: its direction and its availability. Bins A bin is a container for a collection of elements. Pipelines A pipeline is a top-level bin. Bus A bus is a simple system that takes care of forwarding messages from the streaming threads to an application in its own thread context Capabilities(short: caps) describe the type of data that is streamed between two pads, or that one pad (template) supports. Ghost pads A pad from some element in the bin that can be accessed directly from the bin as well. gst_element_add_pad (bin, gst_ghost_pad_new (“sink”, pad));

  • 每一个管道默认拥有一个总线Bus(不知道是不是这么翻译),不需要自己创建,只需设置消息处理函数到总线上即可,总线会自动周期检查消息并调用设置好的回调函数。
  • 使用Glib mainloop时总线信号处理函数注册可用方式:

     

    以上为播放音频

    动态Pads

    当需要创建动态pipeline的时候,可以绑定信号处理函数到特定的element,当element自动创建完新的pad会发出pad-added信号,只要捕获此信号,就可以在信号处理函数中完成需要完成的动作,如element之间的链接(link)

     

  • Request pads

    request pads不像dynamic pads一样会被自动创建,而是按需创建的。 这种功能在一些场合,如在多路复用器,聚合器和Tee elements中非常有用。 所谓聚合器是指elements将多个输入汇合成一个输出,Tee elements刚好相反。 多路复用器是指从多个信号中选择一个进行输出(亦称数据选择器)。

    可以通过 gst_element_get_request_pad (TeeElement, name)来获取特定名称的pad,或者使用 gst_element_get_compatible_pad (GstElement, toLinkPad, NULL)自动选择获取与将要链接的源pad兼容的目标pad。再用 gst_pad_link (tolink_pad, pad)进行链接。

    Ogg可以以各种格式(如Dirac,MNG,CELT,MPEG-4,MP3等), 嵌入音频和视频