gst-launch-1.0

信息此内容主要来自 gst-launch-1.0 工具的 Linux 手册页。 因此,它在路径规范和插件名称方面非常以 Linux 为中心。 请耐心等待它被重写为更通用。

名称

gst-launch-1.0 - 构建并运行 GStreamer pipeline

概要

gst-launch-1.0 [OPTIONS] PIPELINE-DESCRIPTION

描述

gst-launch-1.0 是一个构建和运行基本 GStreamer pipeline的工具。

在最简单的形式中,pipeline描述是由感叹号 (!) 分隔的element列表。属性可以以property=value 的形式附加到element。

有关可能的 PIPELINE-DESCRIPTIONS 的更完整描述,请参阅下面的 Pipeline Description 部分或查阅 GStreamer 文档。

请注意 gst-launch-1.0 主要是一个调试工具。您不应该在它之上构建应用程序。对于应用程序,使用 GStreamer API 的 gst_parse_launch() 函数作为从pipeline描述构建pipeline的简单方法。

选项

gst-launch-1.0 接受以下选项:

--help

打印帮助文档总览和可用FLAGS

-v, --verbose

输出状态信息和属性通知

-q, --quiet

不打印任何进度信息

-m, --messages

发布在pipeline总线上的输出消息

-t, --tags

输出tags(也称为元数据)

-o FILE, --output=FILE

将pipeline的 XML 表示保存到 FILE 并退出

-f, --no_fault

不要安装故障处理程序

-T, --trace

打印内存分配跟踪。该功能必须在编译时启用才能工作。

GStreamer 选项

gst-launch-1.0 还接受以下所有 GStreamer 应用程序通用的选项:

Pipeline描述

pipeline由element和links组成。element可以放入不同种类的bin中。可以在pipeline描述中以任何顺序指定element、links和bin。

Elements

ELEMENTTYPE [PROPERTY1 ...]

创建一个 ELEMENTTYPE 类型的element并设置其属性。

Element属性

PROPERTY=VALUE ...

将属性设置为指定值。 您可以使用 gst-inspect-1.0 来了解不同element的属性和允许值。 枚举属性可以通过名称、别名或值来设置。

bin

[BINTYPE.] ([PROPERTY1 ...] PIPELINE-DESCRIPTION)

指定创建 BINTYPE 类型的 bin 并设置给定的属性。 大括号之间的每个element都放入 bin 中。 请注意必须在 BINTYPE 之后使用的点(.)。 你几乎永远不需要这个功能,它只对使用 gst_parse_launch() API 和 bin 作为 bintype 的应用程序真正有用。 这样就可以构建部分pipeline而不是成熟的顶级pipeline。

Links

[[SRCELEMENT\].[PAD1,...]] ! [[SINKELEMENT].[PAD1,...]]

将名称为 SRCELEMENT 的element链接到名称为 SINKELEMENT 的element。 可以使用 name 属性在element上设置名称。 如果省略名称,则使用在链接之前或之后直接指定的element。 这适用于bin。 如果给出了padname,则使用该pad 完成链接。 如果没有给出pad名称,则会尝试所有可能性并使用兼容的pad。 如果给出了多个 padname,则双方必须指定相同数量的 pad,并按照给定的顺序完成多个链接。 最简单的链接是一个简单的感叹号。 这将其左侧的element与其右侧的element联系起来。

下面将名称为 SRCELEMENT 的element链接到名称为 SINKELEMENT 的element,使用 CAPS 中指定的caps作为过滤器:

[[SRCELEMENT].[PAD1,...]] ! CAPS ! [[SINKELEMENT].[PAD1,...]]

Caps

MIMETYPE [, PROPERTY[, PROPERTY ...]]] [; CAPS[; CAPS ...]]

使用给定的mimetype和可选的给定属性创建capability 。 mimetype 可以使用 " 或 ' 进行转义。如果您想把caps串起来,您可以在之后以相同的格式添加更多caps。

Caps Properties

NAME=[(TYPE)] VALUE in lists and ranges: [(TYPE)] VALUE

在capabilities中设置要求的属性。名称是一个字母数字值,类型可以有以下不区分大小写的值:

  • i 或 int 用于整数值或范围;
  • f 或 float 用于浮点值或范围;
  • 4 或fourcc 用于 FOURCC 值 ;
  • b、bool 或 boolean 用于布尔值;
  • s、str 或 string 表示字符串;
  • fraction 用于的分数值(帧率,像素纵横比);
  • l 或 list 列表。

如果没有给出类型,则尝试以下顺序:整数、浮点数、布尔值、字符串。整数值必须可以用strtol()解析,浮点数可用 strtod()解析 。 FOURCC 值可以是整数或字符串。布尔值是(不区分大小写的)yes、no、true 或 false,并且可能喜欢用 " 或 ' 转义字符串。范围采用以下格式:[ VALUE, VALUE];列表使用以下格式: (VALUE [, VALUE ... ])。

Pipeline控制

pipeline可以由信号控制。 SIGUSR2 将停止pipeline (GST_STATE_NULL); SIGUSR1 将重回播放状态 (GST_STATE_PLAYING)。默认情况下,pipeline将以 PLAYING 状态启动。目前没有明确定义进入就绪或暂停(GST_STATE_READY 和 GST_STATE_PAUSED)状态的信号。

Pipeline示例

下面的示例假设您有正确的插件可用。通常,osssink 可以替换为其他音频输出插件,例如 directsoundsink、esdsink、alsasink、osxaudiosink 或 artdsink。同样,xvimagesink 可以替换为 d3dvideosink、ximagesink、sdlvideosink、osxvideosink 或 aasink。请记住,尽管不同的sink可能接受不同的格式,甚至同一个sink也可能在不同的机器上接受不同的格式,因此您可能需要在接收器前为音频或视频转换添加诸如 audioconvert 和 audioresample 之类的转换器element以使其正常工作。

音频播放

使用基于 libmad 的插件播放 mp3 音乐文件“music.mp3”并输出到 OSS 设备:

gst-launch-1.0 filesrc location=music.mp3 ! mad ! audioconvert !
audioresample ! osssink

播放Ogg Vorbis格式文件:

gst-launch-1.0 filesrc location=music.ogg ! oggdemux ! vorbisdec !
audioconvert ! audioresample ! osssink

使用GNOME-VFS播放mp3文件:

gst-launch-1.0 gnomevfssrc location=music.mp3 ! mad ! osssink

使用GNOME-VFS播放HTTP流:

gst-launch-1.0 gnomevfssrc location=<http://domain.com/music.mp3> ! mad
! audioconvert ! audioresample ! osssink

使用GNOME-VFS播放位于SMB服务器上的mp3文件:

gst-launch-1.0 gnomevfssrc location=<smb://computer/music.mp3> ! mad !
audioconvert ! audioresample ! osssink

格式转换

将mp3音乐文件转换为Ogg Vorbis文件:

gst-launch-1.0 filesrc location=music.mp3 ! mad ! audioconvert ! vorbisenc !
oggmux ! filesink location=music.ogg

转换为FLAC格式:

gst-launch-1.0 filesrc location=music.mp3 ! mad ! audioconvert ! flacenc !
filesink location=test.flac

其他

播放包含原始音频数据(PCM)的.WAV文件:

gst-launch-1.0 filesrc location=music.wav ! wavparse ! audioconvert !
audioresample ! osssink

将包含原始音频数据的。wav文件转换为Ogg Vorbis或mp3文件:

gst-launch-1.0 filesrc location=music.wav ! wavparse ! audioconvert !
vorbisenc ! oggmux ! filesink location=music.ogg
gst-launch-1.0 filesrc location=music.wav ! wavparse ! audioconvert ! lame !
filesink location=music.mp3

撷取所有的音轨并转换成一个单一的mp3文件:

gst-launch-1.0 cdparanoiasrc mode=continuous ! audioconvert ! lame !
id3v2mux ! filesink location=cd.mp3

从CD撷取轨道5并转换成一个单一的mp3文件:

gst-launch-1.0 cdparanoiasrc track=5 ! audioconvert ! lame ! id3v2mux
! filesink location=track5.mp3

使用 gst-inspect-1.0,可以发现类似于上述“cdparanoiasrc”的设置,它会告诉它翻录整张 CD 或仅翻录其中的曲目。 或者,您可以使用 URI 并且 gst-launch-1.0 会为您找到支持该协议的element(例如 cdparanoia),例如:

gst-launch-1.0 [cdda://5] ! lame vbr=new vbr-quality=6 !
filesink location=track5.mp3

记录声音从你的音频输入和编码到一个ogg文件:

gst-launch-1.0 osssrc ! audioconvert ! vorbisenc ! oggmux !
filesink location=input.ogg

使用用户定义的延迟运行管道(参见gst_pipeline_set_latency()):

gst-launch-1.0 pipeline. \( latency=2000000000 videotestsrc ! jpegenc ! jpegdec ! fakevideosink \)

视频

只显示MPEG-1视频文件的视频部分,输出到X显示窗口:

gst-launch-1.0 filesrc location=videofile.mpg ! dvddemux ! mpeg2dec !
xvimagesink

显示.vob文件的视频部分(用于dvd),输出到SDL窗口:

gst-launch-1.0 filesrc location=flflfj.vob ! dvddemux ! mpeg2dec ! sdlvideosink

播放MPEG电影的视频和音频部分:

gst-launch-1.0 filesrc location=movie.mpg ! dvddemux name=demuxer
demuxer. ! queue ! mpeg2dec ! sdlvideosink
demuxer. ! queue ! mad !  audioconvert ! audioresample ! osssink

播放带有外部文本字幕流的AVI电影:

gst-launch-1.0 filesrc location=movie.mpg ! mpegdemux name=demuxer
demuxer. ! queue ! mpeg2dec ! videoconvert ! sdlvideosink
demuxer. ! queue ! mad ! audioconvert ! audioresample ! osssink

这个例子展示了如果一个element(这里:textoverlay)有多个sink pad或source pad,如何通过名称引用特定的pad:

gst-launch-1.0 textoverlay name=overlay ! videoconvert ! videoscale !
autovideosink
filesrc location=movie.avi ! decodebin2 !  videoconvert ! overlay.video_sink
filesrc location=movie.srt ! subparse ! overlay.text_sink

使用playbin播放一个AVI电影与外部文本字幕流:

gst-launch-1.0 playbin uri=<file:///path/to/movie.avi>
suburi=<file:///path/to/movie.srt>

网络流媒体

使用 RTP 和network element流式传输视频

此命令在传输端上运行:

gst-launch-1.0 v4l2src !
video/x-raw-yuv,width=128,height=96,format='(fourcc)'UYVY !
videoconvert ! ffenc_h263 ! video/x-h263 ! rtph263ppay pt=96 !
udpsink host=192.168.1.1 port=5000 sync=false

在接收端上使用此命令:

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,
clock-rate=90000,payload=96 ! rtph263pdepay queue-delay=0 ! ffdec_h263
! xvimagesink

诊断

生成一个空流并忽略它(并打印出详细信息):

gst-launch-1.0 -v fakesrc num-buffers=16 ! fakesink

生成一个纯正弦音调来测试音频输出:

gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! osssink

生成一个纯正弦音调来测试音频输出:

gst-launch-1.0 videotestsrc ! ximagesink

自动链接

您可以使用“decodebin” element自动选择正确的element以获得工作的pipeline。

播放任何支持的音频格式:

gst-launch-1.0 filesrc location=musicfile ! decodebin ! audioconvert !
audioresample ! osssink

播放任何支持的视频格式的视频和音频输出。自动使用线程:

gst-launch-1.0 filesrc location=videofile ! decodebin name=decoder
decoder. ! queue ! audioconvert ! audioresample ! osssink
decoder. ! videoconvert ! xvimagesink

你可以使用playbin element来简化上述内容:

gst-launch-1.0 playbin uri=<file:///home/joe/foo.avi>

过滤后的连接

这些示例向您展示了如何使用filtered caps。

显示一个测试图像,并使用YUY2或YV12视频格式:

gst-launch-1.0 videotestsrc !
'video/x-raw-yuv,format=(fourcc)YUY2;video/x-raw-yuv,format=(fourcc)YV12'
! xvimagesink

记录音频并将其写入一个.wav文件。强制使用带符号的16到32位样本,采样率在32kHz到64KHz之间:

gst-launch-1.0 osssrc !
'audio/x-raw-int,rate=[32000,64000],width=[16,32],depth={16,24,32},signed=(boolean)true'
! wavenc ! filesink location=recording.wav

环境变量

GST_DEBUG:用逗号分隔的调试类别和级别列表,例如:

GST_DEBUG=totem:4,typefind:5

GST_DEBUG_NO_COLOR:设置此环境变量时,禁用彩色调试输出。将调试输出保存到文件时,这可能会派上用场。

GST_DEBUG_DUMP_DOT_DIR:当设置为文件系统路径时,将pipeline构建图的dot文件存储在那里。

GST_REGISTRY:插件注册表文件的路径。默认值为 ~/.gstreamer-1.0/registry-CPU.xml,其中 CPU 是编译 GStreamer 的机器/cpu 类型,例如'i486', 'i686', 'x86-64', 'ppc' 等。查看 uname -i 和 uname -m 的输出以了解详细信息。

GST_REGISTRY_UPDATE:设置为“no”以强制 GStreamer 假定没有插件已更改、已添加或已删除。这将使 GStreamer 跳过初始检查以确定是否需要重建注册表缓存。这在安装的插件永远不会改变的嵌入式环境中可能很有用。不要在任何其他设置中使用此选项。

GST_PLUGIN_PATH:指定要扫描其他插件的目录列表。这些优先于系统插件。

GST_PLUGIN_SYSTEM_PATH:指定默认情况下始终加载的插件列表。如果未设置,则默认为系统安装路径,以及安装在用户主目录中的插件

OIL_CPU_FLAGS:有用的 liboil 环境变量。当 valgrind 或其他调试工具跳过 liboil 的 CPU 检测时,设置 OIL_CPU_FLAGS=0。不少重要的 GStreamer 插件如 videotestsrc、audioconvert 和 audioresample 都使用 liboil。

G_DEBUG:这是一个有用的 GLib 环境变量。设置 G_DEBUG=fatal_warnings 使 GStreamer 程序在发生断言失败等严重警告时中止。如果您想找出代码的哪一部分导致触发该警告以及在什么情况下,这很有用。只需像上面提到的那样设置 G_DEBUG 并在 gdb 下运行程序(或让它核心转储)。然后以通常的方式获取堆栈跟踪。

Logo

更多推荐