Gstreamer基础教程10: Gstreamer 工具

本文是Gstreamer基础教程的一部分,主要介绍了GStreamer的三个重要命令行工具:gst-launch-1.0用于构建和运行GStreamer管道,gst-inspect-1.0用于查看元素信息,以及gst-discoverer-1.0用于分析媒体文件结构。通过实例展示了如何使用这些工具进行元素链接、属性设置、命名及Caps过滤等操作。
摘要由CSDN通过智能技术生成

1. Goal

GStreamer附带了一系列工具,从方便到绝对必要。 本教程中没有代码,请坐下来放松身心,我们将教您:

  • 如何在不使用C的情况下从命令行构建和运行GStreamer管道
  • 如何找出可用的GStreamer元素及其功能
  • 如何发现媒体文件的内部结构。

2. 介绍

这些工具位于GStreamer二进制文件的bin目录中。 您需要移动到该目录来执行它们,因为它没有添加到系统的PATH环境变量中(以避免过多污染它)。
只需打开一个终端(或控制台窗口)并转到GStreamer安装的bin目录(再次阅读Installation GStreamer部分,以找到我们的位置),就可以开始键入本教程中给出的命令了。
为了允许多个版本的GStreamer在同一系统中共存,对这些工具进行了版本控制,即,在其名称后附加了一个GStreamer版本号。 此版本基于GStreamer 1.0,因此这些工具称为gst-launch-1.0,gst-inspect-1.0和gst-discoverer-1.0。

3. gst-lanuch-1.0

该工具接受pipeline的文本描述,实例化它,并将其设置为PLAYING状态。 它允许您在使用GStreamer API调用进行实际实现之前,快速检查给定的pipeline是否有效。
请记住,它只能创建简单的pipeline。 特别是,它最多只能模拟pipeline与应用程序的交互。 无论如何,快速测试pipeline非常方便,并且全世界的GStreamer开发人员每天都在使用它。
请注意,gst-launch-1.0主要是开发人员的调试工具。 您不应该在此基础上构建应用程序。 而是使用GStreamer API的gst_parse_launch函数作为从pipeline描述构造pipeline的简便方法。
尽管构造pipeline描述的规则非常简单,但是多个元素的串联可以使这些描述很快变得像黑魔法。不要害怕,因为每个人最终都会学习gst-launch-1.0语法。
gst-launch-1.0的命令行由一个选项列表和一个PIPELINE-DESCRIPTION组成。 接下来给出一些简化的说明,请参阅参考页上有关gst-launch-1.0的完整文档。

以下命令需要把autovideosink替换成ximagesink能成功运行

3.1 Elements

简而言之,PIPELINE-DESCRIPTION是由感叹号(!)分隔的元素类型列表。继续并输入以下命令:

gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

您应该看到带有动画视频图案的窗口。 在终端上使用CTRL + C停止程序。
这将实例化一个videotestsrc类型的新元素(一个生成示例视频模式的元素),一个videoconvert(一个进行原始视频格式转换,确保其他元素可以相互理解的元素)和一个autovideosink(一个视频窗口) 呈现)。 然后,GStreamer尝试将每个元素的输出链接到描述中右侧出现的元素的输入。 如果有多个输入或输出Pad,则Pad Caps用于查找两个兼容Pad。

3.2 Properties

属性可以以property = value(可以指定多个属性,用空格分隔)的形式附加到元素上。使用gst-inspect-1.0工具(接下来说明)来查找元素的可用属性。

gst-launch-1.0 videotestsrc pattern=11 ! videoconvert ! autovideosink

您应该看到一个由圆圈组成的静态视频模式。

3.3 Named elements

可以使用name属性来命名elements,这样可以创建涉及分支的复杂pipeline。名称允许链接到描述中先前创建的elementes,并且对于使用具有多个输出pad的elements(例如,解复用器或tee)必不可少。
使用其名称后跟一个点来引用已命名elements。

gst-launch-1.0 videotestsrc ! videoconvert ! tee name=t ! queue ! autovideosink t. ! queue ! autovideosink

您应该看到两个视频窗口,显示相同的示例视频模式。 如果只看到一个,请尝试将其移动,因为它可能位于第二个窗口的顶部。

3.4 Pads

您可能不希望让GStreamer选择在链接两个elements时要使用哪个Pad,而是可以直接指定Pad。 您可以通过在elements名称之后添加点号和Pad名称(必须是命名elements)来做到这一点。 使用gst-inspect-1.0工具了解pad的名称。
例如,当您要从解复用器中检索一个特定的流时,这很有用:

gst-launch-1.0 souphttpsrc location=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! matroskademux name=d d.video_0 ! matroskamux ! filesink location=sintel_video.mkv

这使用webm格式(一种特殊的Matroska容器,请参阅基本教程2:GStreamer概念)使用souphttpsrc从Internet上获取媒体文件。 然后,我们使用matroskademux打开容器。 该媒体包含音频和视频,因此matroskademux将创建两个输出Pad,分别名为video_0和audio_0。 我们将video_0链接到matroskamux元素,以将视频流重新打包到一个新的容器中,最后将其链接到一个filesink,filesink会将流写入一个名为"sintel_video.mkv"的文件中(location属性指定了 文件)。
总之,我们取了一个webm文件,剥离了它的音频,并生成了一个新的matroska文件和视频。如果我们只想保留音频:


                
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值