"); //-->
我们在之前的介绍中详细介绍基于820A的GStreamer的相关基础概念的简介,在此基础上我们开始介绍Gst-lunch相关以及工具的使用,本节我们将对lunch-pads相关来做出讨论。
Gst-launch 使用之Pads
• 在连接两个element时与其让GStreamer来选择哪个Pad,我们宁可直接指定Pad。我们可以在命名element后使用.+pad名字的方法来做到这点(element必须先命名)。
• gst-launch-0.10 souphttpsrc location=http://docs.gstreamer.com/media/sintel_trailer-480p.webm ! matroskademux name=d d.video_00 ! matroskamux ! filesink
location=sintel_video.mkv
• 这个命令使用souphttpsrc在internet上锁定了一个媒体文件,这个文件是webm格式
的。我们可以用matroskademux来打开这个文件,因为媒体包含音频和视频,所以我们创建了两个输出Pad,名字分别是video_00和audio_00。我们把video_00和matroskamux element连接起来,把视频流重新打包,最后连接到filesink,这样我们就把流存到了一个名叫sintel_video.mkv的文件。
• 总之,我们找了一个webm文件,去掉了声音,仅把视频拿出来存成了一个新文件。
最终我们能够找到这个.mkv格式的文件。
• 如果我们想要保持声音,那么就应该这样做:
• gst-launch-0.10 souphttpsrc
location=http://docs.gstreamer.com/media/sintel_trailer-
480p.webm ! matroskademux name=d d.audio_00 ! vorbisparse !
matroskamux ! filesink location=sintel_audio.mka
• 用playbin2播放一个媒体文件: gst-launch-
0.10 playbin2 uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm
• 一个正常的播放pipeline: gst-launch-
0.10 souphttpsrc location=http://docs.gstreamer.com/media/sintel_trailer-
480p.webm ! matroskademux name=d ! queue ! vp8dec ! ffmpegcolorspace ! autovideosink d. ! queue ! v
orbisdec ! audioconvert ! audioresample ! autoaudiosink
• 一个转码的pipeline,解析webm之后把所有的流解码,重新把音视频编码成其他格式,然后压成
Ogg文件: gst-launch-0.10 uridecodebin uri=http://docs.gstreamer.com/media/sintel_trailer-
480p.webm name=d ! queue ! theoraenc ! oggmux name=m ! filesink location=sintel.ogg d. ! queue ! audi
oconvert ! audioresample ! flacenc ! m.
• 一个调整视频比例的pipeline。 videoscale element可以调整输入尺寸然后再输出。例子里面用Caps过滤设置了视频大小为320x200: gst-launch-
0.10 uridecodebin uri=http://docs.gstreamer.com/media/sintel_trailer-
480p.webm ! queue ! videoscale ! video/x-rawyuv,width=320,height=200 ! ffmpegcolorspace ! autovideosink
Gst-inspect
• 这个工具有三种操作:
• 不带参数,它会列出所有可用的element,也就是你所有可以使用的元素
• 带一个文件名,它会把这个文件作为GStreamer的一个插件,试着打开,然后列出内部所有的element
• 带一个GStreamer的element,会列出该element的所有信息
• 像gst-inspect 这样的工具可以给出一个元件的概要:插件的作者、描述性的元件名称(或者简称)、元件的等级以及元件的类别。
• 类别可以用来得到一个元件的类型,这个类型是在使用工厂元件创建该元件时做创建的。例如类别可以是Codec/Decoder/Video(视频解码器)、Source/Video(视频发生器)、 Sink/Video(视频输出器)。音频也有类似的类别。同样还存在Codec/Demuxer和
Codec/Muxer,甚至更多的类别。
这里最重要的是 :
• 继承框架
• Pad Templates:这部分会列出所有的Pad的种类以及它们的Caps。通过这些你可以确
认是否可以和某一个element连接。这个例子中,只有一个sink的Pad Template,只能
接受video/x-vp8(用VP8格式来编码视频数据)格式;只有一个source的Pad Template,
生成video/x-raw-yuv。
• element的属性 :这里列出了element的所有的属性以及有效值。
gst-discoverer
• 这个工具是对GstDiscoverer对象的一个包装。它可以接受从命令行输入的一个URI,然后打印出所有的信息。这个在查看媒体是如何编码如何复用时是很有用的,这样我们可以确定把什么element放到pipeline里面。
• 例子:
gst-discoverer-0.10 http://docs.gstreamer.com/media/sintel_trailer-
480p.webm -v
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。