虚拟机ubuntu下使用gstreamer推流学习笔记(三)element的选择

一、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、使用

  1. 一个音视频文件,我们知道它的容器,还有视频和音频格式,然后要找到需要的element
    在这里插入图片描述
  2. 然后通过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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值