【視頻開發】Gstreamer中一些gst-launch常用命令


GStreamer是著名的開源多媒體框架,功能強大,其命令行程序 gst-launch 可以實現很多常規測試、播放等,作為系統調試等是非常方便的。


1、攝像頭測試

gst-launch v4l2src ! xvimagesink

gst-launch v4l2src ! video/x-raw-yuv,width=320,height=240,framerate=20/1 ! xvimagesink

上述命令不一定能夠成功,或者出現的攝像頭圖像窗口沒有正常的圖像,這是因為攝像頭支持的圖像格式會有差別,gstreamer 默認采用的格式不被支持,這時可以嘗試:

gst-launch v4l2src ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=320,height=240 ! xvimagesink

基本上可以了。根據 gstreamer 的文檔,針對 v4l2src 這個插件,能夠支持的圖像格式在這里有詳細說明說明。這里要注意,強制指定圖像格式是采用 format 參數,並且要用到 (fourcc) 指示字,必須帶有括號的,但是在命令行下,括號是特殊含義字符,所以用 \ 反斜杠轉意處理!這只是一個例子說明,你可以嘗試確定你的攝像頭到底支持哪種圖像格式,然后就可以用通過 format 參數來指定了。


2、播放文件

gst-launch playbin uri=file:///path/to/test.avi

據說還有 playbin2 插件,采用的是新的播放解碼。


具體有關 gstreamer 的一些資源參考:

http://blog.csdn.net/fancycow/article/details/7552520

http://blog.csdn.net/wzwxiaozheng/article/details/6099397

http://blog.csdn.net/shallon_luo/article/details/5400708

http://blog.csdn.net/wzwxiaozheng/article/details/6130818

http://blog.chinaunix.net/uid-10747583-id-282761.html

http://wiki.oz9aec.net/index.php/Gstreamer_cheat_sheet#Webcam_Capture(重點推薦文章)

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-v4l2src.html






Gstreamer中一些gst-launch常用命令

Linux系統中使用gstreamer架構做對媒體開發時,gst-inspect
gst-launch是兩個非常使用的小工具,gst-inspect 在開發時用於查詢庫各個插件element的詳細信息,后者用於在終端快速構建一條pipeline用於播放多媒體。下面列出我在以前的學習和項目開發時常用的gst-launch播放各種多媒體文件的實例:

一、gstreamer實現視頻顯示

gst-launch videotestsrc ! xvimagesink

 

二、gstreamer實現攝像頭采集:

1、可以現實圖像,但圖像卡住不動

gst-launch v4l2src ! xvimagesink

 

2、攝像頭視頻顯示正常

gst-launch v4l2src !video/x-raw-yuv,format=\(fourcc\)YUY2,width=640,height=480,framerate=15/1 !videorate ! videoscale ! ffmpegcolorspace ! xvimagesink

 

gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=15/1 !queue2 ! videorate ! videoscale ! ffmpegcolorspace ! xvimagesink

 

三、攝像頭視頻現實及保存為avi格式文件

gst-launch -e v4l2src !video/x-raw-yuv,format=\(fourcc\)YUY2,width=640,height=480,framerate=30/1 ! teename=srctee \

srctee. ! queue2 name=squeue ! ffmpegcolorspace ! xvimagesink \

srctee. ! queue2 name=fqueue !  videorate ! ffmpegcolorspace !ffenc_mpeg4 ! avimux ! filesink location=test.avi

 

四、將攝像頭視頻比例設置為16:9

gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=15/1 !aspectratiocrop aspect-ratio=16/9 ! ffmpegcolorspace ! xvimagesink

 

五、保存攝像頭的視頻為avi格式

gst-launch -e v4l2src ! video/x-raw-yuv, format=\(fourcc\)YUY2,framerate=30/1, width=640, height=480 ! videorate ! ffmpegcolorspace !ffenc_mpeg4 ! avimux ! filesink location=test.avi

 

六、多個流數據同時錄制

gst-launch -e avimux name="muxer" ! filesink location=multi.avi\

v4l2src ! video/x-raw-yuv, format=\(fourcc\)YUY2, framerate=25/1,width=640, height=480 ! videorate ! ffmpegcolorspace ! ffenc_mpeg4 ! queue2 !muxer. \

pulsesrc ! audioconvert ! audioresample! lamemp3enc target=1 bitrate=64cbr=true ! queue2 ! muxer.

 

七、畫中畫

1、videomixer可以將兩個或多個視頻流混合到一起:

gst-launch -e videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! videomixer name=mix ! \

   ffmpegcolorspace ! xvimagesink videotestsrc !video/x-raw-yuv, framerate=10/1, width=640, height=360 ! mix.

 

2、GstVideoMixerPad能夠改變Z軸和圖像的位置

gst-launch videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! \

   videomixer name=mix sink_1::xpos=20 sink_1::ypos=20sink_1::alpha=0.5 sink_1::zorder=3 sink_2::xpos=100 sink_2::ypos=100sink_2::zorder=2 ! \

   ffmpegcolorspace ! xvimagesink videotestsrc pattern=13 !video/x-raw-yuv, framerate=10/1, width=200, height=150 ! mix. \

   videotestsrc ! video/x-raw-yuv, framerate=10/1, width=640,height=360 ! mix.

 

3、GstVideoMixerPad可以制定每個sink

gst-launch \

   videomixer name=mix sink_1::xpos=20 sink_1::ypos=20sink_1::alpha=0.5 sink_1::zorder=3 sink_2::xpos=100 sink_2::ypos=100 sink_2::zorder=2! \

   ffmpegcolorspace ! xvimagesink \

   videotestsrc ! video/x-raw-yuv, framerate=10/1, width=640,height=360 ! mix.sink_0 \

   videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! mix.sink_1 \

   videotestsrc pattern=13 ! video/x-raw-yuv, framerate=10/1,width=200, height=150 ! mix.sink_2

 

八、VideoBox可以用來制定視頻框的大小和位置和apha混合透明度等

1、不透明

gst-launch -e videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! videobox border-alpha=0 top=-100left=-100 ! \

videomixer name=mix ! ffmpegcolorspace ! xvimagesink videotestsrc !video/x-raw-yuv, framerate=10/1, width=640, height=360 ! mix.

2、指定透明度

gst-launch -e videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! \

   videobox border-alpha=0 alpha=0.6 top=-20 left=-25 !videomixer name=mix ! ffmpegcolorspace ! xvimagesink \

   videotestsrc ! video/x-raw-yuv, framerate=10/1, width=640,height=360 ! mix.

3、添加邊框

gst-launch -e videotestsrc pattern="snow" ! video/x-raw-yuv,framerate=10/1, width=200, height=150 ! \

   videobox border-alpha=1.0 top=-2 bottom=-2 left=-2 right=-2 !videobox border-alpha=0 alpha=0.6 top=-20 left=-25 ! \

   videomixer name=mix ! ffmpegcolorspace ! xvimagesinkvideotestsrc ! video/x-raw-yuv, framerate=10/1, width=640, height=360 ! mix.

 

九、VideoWall視頻牆

gst-launch -e videomixer name=mix ! ffmpegcolorspace ! xvimagesink \

   videotestsrc pattern=1 ! video/x-raw-yuv, framerate=5/1,width=320, height=180 ! videobox border-alpha=0 top=0 left=0 ! mix. \

   videotestsrc pattern=15 ! video/x-raw-yuv, framerate=5/1,width=320, height=180 ! videobox border-alpha=0 top=0 left=-320 ! mix. \

   videotestsrc pattern=13 ! video/x-raw-yuv, framerate=5/1,width=320, height=180 ! videobox border-alpha=0 top=-180 left=0 ! mix. \

   videotestsrc pattern=0 ! video/x-raw-yuv, framerate=5/1,width=320, height=180 ! videobox border-alpha=0 top=-180 left=-320 ! mix. \

   videotestsrc pattern=3 ! video/x-raw-yuv, framerate=5/1,width=640, height=360 ! mix.

 

十、TextOverlay 在視頻上面添加文本,由textoverlay插件實現,可以設置文本的屬性

gst-launch videotestsrc !video/x-raw-yuv,width=640,height=480,framerate=15/1 ! textoverlaytext="Hello" ! ffmpegcolorspace ! ximagesink

 

十一、TimeOverlay ,由timeoverlay插件實現

1、由timeoverlay插件實現

gst-launch videotestsrc ! timeoverlay ! xvimagesink

 

gst-launch -v videotestsrc ! video/x-raw-yuv, framerate=25/1, width=640,height=360 ! \

   timeoverlay halign=left valign=bottom text="Streamtime:" shaded-background=true ! xvimagesink

 

2、cairotimeoverlay

gst-launch videotestsrc ! cairotimeoverlay ! ffmpegcolorspace ! xvimagesink

 

3、clockoverlay時鍾

gst-launch videotestsrc ! cairotimeoverlay ! ffmpegcolorspace ! xvimagesink

gst-launch videotestsrc ! clockoverlay halign=right valign=bottomshaded-background=true time-format="%Y.%m.%D" ! ffmpegcolorspace !ximagesink

 

 

十二、錄制視頻為ogg格式,帶時間和日期overlay

gst-launch -e v4l2src ! video/x-raw-yuv, format=\(fourcc\)YUY2,framerate=20/1, width=640, height=480 ! \

ffmpegcolorspace ! \

   timeoverlay halign=right valign=top ! clockoverlayhalign=left valign=top time-format="%Y/%m/%d %H:%M:%S" ! \

   tee name="splitter" ! queue2 ! xvimagesinksync=false splitter. ! \

   queue2 ! videorate ! ffmpegcolorspace ! theoraenc bitrate=256! oggmux ! filesink location=webcam.ogg

 

十三、視頻牆

gst-launch videomixer name=mix sink_1::xpos=20 sink_1::ypos=20sink_1::alpha=1.0 sink_1::zorder=3 sink_2::xpos=40 sink_2::ypos=40sink_2::zorder=2 ! ffmpegcolorspace ! xvimagesink \

     uridecodebinuri=file:///mnt/hgfs/fedshare/source/video/loveStyle.mp4 ! ffmpegcolorspace !videoscale ! mix. \

     uridecodebin uri=file:///mnt/hgfs/fedshare/source/video/davincieffect_480p30.mp4! ffmpegcolorspace ! videoscale ! mix. \

     videotestsrc ! video/x-raw-yuv, framerate=10/1,width=800, height=540 ! mix.

 

十四、播放視頻文件,帶聲音

gst-launch uridecodebinuri=file:///mnt/hgfs/fedshare/source/video/loveStyle.mp4 name=decoder \

decoder. ! audioconvert ! autoaudiosink \

decoder. ! ffmpegcolorspace ! xvimagesink


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM