一、gst-inspect-1.0
1、介绍
gst-inspect-1.0 [OPTION...] [PLUGIN|ELEMENT]
这个工具有三种操作: • 不带参数,它会列出所有可用的element,也就是你所有可以使用的元素 •
带一个文件名,它会把这个文件作为GStreamer的一个插件,试着打开,然后列出内部所有的element •
带一个GStreamer的element,会列出该element的所有信息
现在我想用自己创建pipeline并连接element来播放一个视频,,就要知道视频的格式。一个源可能包含视频流和音频流,就要用demuxer(分流器)来分离流,然后我得知道他们是什么格式来编码的音频和视频,然后查找选择合适的element,可以在官方搜索格式来查看相关信息,结合gst-inspect-1.0查找应该用什么解码element。
一些具体信息:查看【GStreamer】gstreamer工具详解之:gst-inspect-1.0
再举个例子:
以下是对mad元件的能力描述,不难看出该元件中实际包含sink和src两个衬垫,并且每个衬垫都带有特定的功能信息。名为sink的衬垫是mad元件的输入端,它能够接受MIME类型为audio/mp3的媒体数据,此外还具有layer、bitrate和framed三种属性。名为src的衬垫是mad元件的输出端,它负责产生MIME类型为audio/raw媒体数据,此外还具有format、depth、rate和channels等多种属性。
Pads:
SINK template: ’sink’
Availability: Always
Capabilities:
’mad_sink’:
MIME type: ’audio/mp3’:
SRC template: ’src’
Availability: Always
Capabilities:
’mad_src’:
MIME type: ’audio/raw’:
format: String: int
endianness: Integer: 1234
width: Integer: 16
depth: Integer: 16
channels: Integer range: 1 - 2
law: Integer: 0
signed: Boolean: TRUE
rate: Integer range: 11025 - 48000
2、使用
- 一个音视频文件,我们知道它的容器,还有视频和音频格式,然后要找到需要的element
- 然后通过gst-inspect-1.0 | grep [编码格式] 找到要使用的元件(区分大小写的哦)
xqh@xqh-virtual-machine:~$ gst-inspect-1.0 | grep Theora
theora: theoradec: Theora video decoder
theora: theoraenc: Theora video encoder
theora: theoraparse: Theora video parser
rtp: rtptheoradepay: RTP Theora depayloader
rtp: rtptheorapay: RTP Theora payloader
同样使用gst-inspect-1.0 | grep [容器] 找到容器Matroska的demuxer分流器
二、gst-discoverer-1.0
gst-discoverer-1.0 FILE|DIRECTORY|URI [FILE2|DIRECTORY2|URI2]
这个工具是对GstDiscoverer对象的一个包装。它可以接受从命令行输入的一个URI,然后打印出所有的信息。这个在查看媒体是如何编码如何复用时是很有用的,这样我们可以确定把什么element放到pipeline里面。
使用gst-discoverer --help来获得帮助。
gst-discoverer-1.0 http://docs.gstreamer.com/media/sintel_trailer-480p.webm -v
Analyzing http://docs.gstreamer.com/media/sintel_trailer-480p.webm
Done discovering http://docs.gstreamer.com/media/sintel_trailer-480p.webm
Topology:
container: video/webm
audio: audio/x-vorbis, channels=(int)2, rate=(int)48000
Codec:
audio/x-vorbis, channels=(int)2, rate=(int)48000
Additional info:
None
Language: en
Channels: 2
Sample rate: 48000
Depth: 0
Bitrate: 80000
Max bitrate: 0
Tags:
taglist, language-code=(string)en, container-format=(string)Matroska, audio-codec=(string)Vorbis, application-name=(string)ffmpeg2theora-0.24, encoder=(string)"Xiph.Org\ libVorbis\ I\ 20090709", encoder-version=(uint)0, nominal-bitrate=(uint)80000, bitrate=(uint)80000;
video: video/x-vp8, width=(int)854, height=(int)480, framerate=(fraction)25/1
Codec:
video/x-vp8, width=(int)854, height=(int)480, framerate=(fraction)25/1
Additional info:
None
Width: 854
Height: 480
Depth: 0
Frame rate: 25/1
Pixel aspect ratio: 1/1
Interlaced: false
Bitrate: 0
Max bitrate: 0
Tags:
taglist, video-codec=(string)"VP8\ video", container-format=(string)Matroska;
Properties:
Duration: 0:00:52.250000000
Seekable: yes
Tags:
video codec: On2 VP8
language code: en
container format: Matroska
application name: ffmpeg2theora-0.24
encoder: Xiph.Org libVorbis I 20090709
encoder version: 0
audio codec: Vorbis
nominal bitrate: 80000
bitrate: 80000