新闻  |   论坛  |   博客  |   在线研讨会
骁龙820A汽车 ADAS 分享方案介绍—多媒体处理之工具使用(二)
车载技术工程师 | 2018-06-26 14:24:18    阅读:596   发布文章

我们在之前的介绍中详细介绍基于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
这个命令使用souphttpsrcinternet上锁定了一个媒体文件,这个文件是webm格式
的。我们可以用
matroskademux来打开这个文件,因为媒体包含音频和视频,所以我们创建了两个输出Pad,名字分别是video_00audio_00。我们把video_00matroskamux 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

blob.png

playbin2播放一个媒体文件: gst-launch-
    0.10 playbin2 uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm
一个正常的播放pipelinegst-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.
一个调整视频比例的pipelinevideoscale 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
带一个GStreamerelement,会列出该element的所有信息
gst-inspect 这样的工具可以给出一个元件的概要:插件的作者、描述性的元件名称(或者简称)、元件的等级以及元件的类别。
类别可以用来得到一个元件的类型,这个类型是在使用工厂元件创建该元件时做创建的。例如类别可以是Codec/Decoder/Video(视频解码器)Source/Video(视频发生器)Sink/Video(视频输出器)。音频也有类似的类别。同样还存在Codec/Demuxer
Codec/Muxer,甚至更多的类别。

blob.png

这里最重要的是 :
继承框架
Pad Templates:这部分会列出所有的Pad的种类以及它们的Caps。通过这些你可以确
认是否可以和某一个
element连接。这个例子中,只有一个sinkPad Template,只能
接受
video/x-vp8(用VP8格式来编码视频数据)格式;只有一个sourcePad Template
生成
video/x-raw-yuv
element的属性 :这里列出了element的所有的属性以及有效值。

blob.png

blob.png

gst-discoverer

这个工具是对GstDiscoverer对象的一个包装。它可以接受从命令行输入的一个URI,然后打印出所有的信息。这个在查看媒体是如何编码如何复用时是很有用的,这样我们可以确定把什么element放到pipeline里面。
例子:
gst-discoverer-0.10 http://docs.gstreamer.com/media/sintel_trailer-
480p.webm -v




*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客