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

  • 相关阅读:
    DB2 SQL1477N问题
    db2 查看表空间使用率
    DB2中的数据类型
    DB2锁机制
    DB2数据库常用命令数据库学习
    DB2 sql报错后查证原因与解决问题的方法
    F. Bakkar In The Army 二分
    On the way to the park Gym
    csu 1552: Friends 二分图 + Miller_Rabin
    Gym
  • 原文地址:https://www.cnblogs.com/huty/p/8517019.html
Copyright © 2011-2022 走看看