zoukankan      html  css  js  c++  java
  • 【视频开发】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

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/huty/p/8517019.html
Copyright © 2011-2022 走看看