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

【视频开发】Gstreamer中一些gst-launch常用命令的更多相关文章

  1. Linux 系统中如何查看日志 (常用命令) tail -f

    Linux 系统中如何查看日志 (常用命令)  tail -f 日志文件 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日 ...

  2. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  3. linux系统中日常运维常用命令汇总一

    一.查看日志和机器相关信息常用命令 1.cat cat 命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往 ...

  4. 【入门】Gradle的基本使用、在IDEA中的配置、常用命令

    一.介绍 java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强 ...

  5. linux系统中如何查看日志 (常用命令2)

    cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...

  6. linux系统中如何查看日志 (常用命令)

    cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...

  7. 【开发工具 - Git】之Git常用命令汇总

    本文记录了Git Bash中的常用指令. 1       Git操作 git clone XXXXX:将GitHub项目XXXXX克隆到本地 git remote –v:查看远程连接信息 git ch ...

  8. Centos中查看系统信息的常用命令

    系统日志文件(可以通过cat或tail命令来查看) /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全 ...

  9. Linux中,MySQL的常用命令

    我的博客 登录 mysql -u用户名 -p -- 然后在下面输入密码,Linux的密码不会显示出,盲打就可以 mysql -u用户名 -p密码 -- 这种方式将直接登录 开关 开启数据库 servi ...

  10. 夺命雷公狗---node.js---2node.js中的npm的常用命令

    npm install <name> 安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本 ...

随机推荐

  1. python基础语法14 面向对象

    面向对象 1.什么是面向对象? 面向对象是一门编程思想! - 面向过程编程思想: 核心是 “过程” 二字,过程指的是解决问题的步骤,即先干什么再干什么! 基于该编程思想编写程序,就好比在设计一条工厂流 ...

  2. jdk1.8——jvm分析与调优

    很多文章都是讲如何配置JVM各个参数的,但是生产环境里参数的值到底配置为多少,却没有一个具体的指标.文章分四个部分,分别是JVM说明.配置,GC的过程和具体配置值. 一.JVM空间说明 JDK 1.7 ...

  3. 使用cookie登录网盘账号

    ①使用Chrome浏览器登录百度网盘网页版 https://pan.baidu.com/ ②查看当前使用的cookie ③获取BDUSS 注意是全选复制,不要直接复制,会不全的. ④获取STOKEN ...

  4. Opentrains 1519 G——最小圆覆盖

    题目 给出 $n$ 个定义在区间 $[0, 1]$ 上的一次函数 $f_i(x) = a_ix+b_i$,定义两个函数的距离为: $$dist(f,g) = \left(\max_{0\leq i\l ...

  5. Let Start

      A free timing software with very small memory occupation. This tool is a pure green convenient off ...

  6. 在IDEA编辑器中建立Spring Cloud的子项目包(构建微服务)

    本文介绍在IDEA编辑器中建立Spring Cloud的子项目包 总共分为5个包: 外层使用maven quickstart建立,子modules直接选择了springboot

  7. Xamarin NuGet 缓存包导致 already added : Landroid/support/annotation/AnimRes 问题解决方案

    在VS中打开您遇到问题的解决方案. 转到工具> NuGet包管理器>包管理器设置 - >常规,然后点击“清除所有NuGet缓存” 这应该返回一个错误,因为你有一个项目打开,但如果没有 ...

  8. R 语言中的数据结构

    基本数据类型 6种 numaric  如 12, 12.4 integer  如 2L,0L complex  包含实数和虚数 如 3+2i character  要用双引号或者单引号包括起来 如 & ...

  9. 一周 GitHub 开源项目推荐:阿里、腾讯、陌陌、bilibili……

    阅读本文大概需要 2.8 分钟. 陌陌风控系统正式开源 陌陌风控系统静态规则引擎,零基础简易便捷的配置多种复杂规则,实时高效管控用户异常行为. GitHub 地址 https://github.com ...

  10. 在error日志打印异常

    在日志中打印异常,经常会看到以下的写法: logger.error(e.getMessage()); 或者是: e.printStackTrace(); 这两种其实都不太好. e.getMessage ...