Gstreamer開發
一個完整的gstreamer命令會包含若干插件,以硬件編碼命令爲例:
sudogst-launch v4l2src device=/dev/video3 framerate=30 ! video/x-raw-yuv, width=1280height=720 framerate=30/1 ! queue ! ducatih264enc ! queue! filesinklocation=./cam1280.mp4
它包含了v4l2src, video/x-raw-yuv, queue,ducatih264enc, filesink 這幾個插件。它們在命令中以 ! 分割,帶等號的表達式是插件的參數,比如device=/dev/video0是 插件v4l2src的參數,表示從系統的/dev/video0獲取圖像數據。
下面以v4l2src插件爲例,說明如何獲取該插件的源碼:
Step1:查詢插件屬於哪個插件包
Gstreamer的插件一般與其他插件一起組成一個插件包,插件包有gst-plugins-base,gst-plugins-good, gst-plugins-bad,gst-plugins-ugly等,使用如下命令查詢插件屬於哪個插件包。
media@ubuntu:~$ gst-inspect v4l2src
得到如下結果:
可以看出v4l2src插件處於gst-plugins-good插件包
Step2:獲取插件包的安裝文件deb信息:
media@ubuntu:~$ dpkg –l > dpkg.lst
在dpkg.lst 查詢關鍵字“plugins-good”, 將得到以下信息:
可以deb文件文件爲gstreamer0.10-plugins-good, 其版本信息0.10.31-1ubuntu1.2+ti1.6.7.1+1,
Step3:去TI OMAP 官方網站下載源碼
TI 有一個發佈OMAP ubuntu軟件包的網站:
http://ppa.launchpad.net/tiomap-dev/omap-trunk/ubuntu/
其中gstreamer軟件包位於地址:
http://ppa.launchpad.net/tiomap-dev/omap-trunk/ubuntu/pool/main/g/
我們可以在子目錄gst-plugins-good0.10找到如下四個文件:
gstreamer0.10-plugins-good0.10.31-1ubuntu1.2+ti1.6.7.1+1 armhf.deb
gstreamer0.10-plugins-good0.10.31-1ubuntu1.2+ti1.6.7.1+1.debian.tar.gz
gst-plugins-good0.10 0.10.31.orig.tar.gz
gst-plugins-good0.100.10.31-1ubuntu1.2+ti1.6.7.1+1.dsc
把這四個文件下載到PCubuntu系統的某個位置,假設爲home目錄,執行如下命令:
pc@ubuntu:~$: dpkg-source-x gst-plugins-good0.10 0.10.31-1ubuntu1.2+ti1.6.7.1+1.dsc
該命令將在當前目錄下生成目錄:gst-plugins-good0.10-0.10.31,該目錄包含了插件包gst-plugins-good的源代碼。
用戶可以參照上述方法獲取其他插件的源代碼,下個表格給出了幾個編解碼常用的插件所在的插件包的信息。爲了方便用戶,我們已將TI OMAP官方的gstreamer代碼放置於光盤中。
插件名稱 | 所屬的插件包 |
Videoparse | Gst-plugins-bad |
Ffmpegcolorspace | Gst-plugins-base |
X264enc | Gst-plugins-ugly |
Ducatih264enc | Gst-ducati |
Step4:從源代碼編譯插件
從源代碼編譯出插件是修改插件的必要條件。在很多情況下,我們要修改插件源代碼,以適應流媒體的各種輸入方式、處理流程以及輸出方式。編譯Gstreamer插件是在Pandaboard上進行的,是本地編譯方式。下面以V4L2插件編譯爲例,說明從源代碼編譯插件的過程。
1. 進入到gst-plugins-good插件包源代碼所在目錄:
media@ubuntu:~$:cd gst-plugins-good
2 執行configure
media@ubuntu:~/gst-plugins-good$: ./configure–prefix=/usr
configure命令用於生成gst-plugins-good所含插件的Makefile。
3、編譯v4l2插件
media@ubuntu:~/gst-plugins-good$cd sys/v4l2
media@ubuntu:~/gst-plugins-good/sys/v4l2$make
下圖示意了編譯過程:
4、安裝插件
media@ubuntu:~/gst-plugins-good/sys/v4l2$ sudo make intall
下圖示意了安裝過程,可以看出gst-plugins-good插件包安裝於/usr/lib/gstreamer-0.10