zoukankan      html  css  js  c++  java
  • Gstreamer学习

    Gstreamer学习笔记----Gstreamer架构设计思想

    http://blog.csdn.net/tx3344/article/details/7497434

    Gstreamer到底是个啥?

    GStreamer 是一个 基于pipeline的多媒体框架,基于GObject,以C语言写成。

    应用GStreamer这个这个多媒体框架,你可以写出任意一种流媒体的应用来如:meidaplayer、音视频编辑器、VOIP、流媒体服务器、音视频编码等等。


    pipeline是啥?

    pipeline是GStreamer设计的核心思想,在说pipeline之前先弄一个meidaplayer的模型,meidaplayer是 GStreamer比较重要的应用之一。不管是VLC、mplayer这些开源的多媒体播放器,还是其他商用的。meidaplayer都能抽象成以下的 模型:



    上面这个图就是个典型的meida播放器的模型:

    source:数据来源,可能是file、http、rtp等.

    demux: 负责把容器里的音视频数据剥离出来,然后分别送给audiovideo  decoder.

    decoder:解码,然后把解完后的数据(yuv、pcm)送给audiovideo output输出.

    output:负责将decoder过来的数据呈现出来.

    如果把数据想象成流水的话,每个模块的功能虽然不同,但是他们大致抽象的功能都是接收上个模块过来的数据,然后加工把加工后的数据送到下一个模块。

    把上述这些模块通过某种方式连接起来,就形成了一个流水线(pipeline),这个流水线就是一个media播放器。


    GStreamer 就是把每个模块都看做是一个Element,然后构建了连接和操作这些Element的方法,用户可以通过自己的需求把不同的Elements 排列组合,形成一个又一个的不同的pipeline。

    你可以形成具有mediaplayer功能 的pipeline 、VOIP功能的pipeline。

    Gstreamer架构


    这个时候再看 Gstreamer整体的架构图就很清楚了,

    底层是150多个plugin,也就是Element.提供不同功能的元件:

    • protocols handling

    • sources: for audio and video (involves protocol plugins)

    • formats: parsers, formaters, muxers, demuxers, metadata, subtitles

    • codecs: coders and decoders

    • filters: converters, mixers, effects, ...

    • sinks: for audio and video (involves protocol plugins)

    中间的core framework提供:插件框架、pipeline架构、媒体类型处理机制、等等,也就是上面说的处理Elements的方式方法.

    上层依靠Gstreamer提供的这些方式方法还有plugin,构建出自己的不同类型的多媒体应用。

  • 相关阅读:
    背包九讲——动态规划
    Collection、Map、数组 遍历方式
    TCP三次握手与四次挥手
    数据结构——B树、B+树
    数据结构——红黑树
    数据结构——二叉查找树、AVL树
    jquery 抽奖示例
    comebotree树
    初玩Linux部署项目
    springMvc + websocket 实现点对点 聊天通信功能
  • 原文地址:https://www.cnblogs.com/jingzhishen/p/3709639.html
Copyright © 2011-2022 走看看