Gstreamer基础知识介绍

2023-05-16

由于deepstream是基于gstreamer的,所以要想在deepstream上做拓展,需要对gstreamer有一定的认识。以下主要介绍Gstreamer整体框架和Gstreamer基础概念。

一、Gstreamer整体框架

gstreamer是一个用于开发流式多媒体应用的开源框架。本身这个框架是为了更好的处理音视频而设计开发的,但gstreamer不限于处理音视频,只要是有明显的数据流特征的应用,gstreamer都能很好的应用。

gstreamer的整体功能核心是pipeline框架以及用于扩展功能的插件:

1、pipeline用于安排数据流图,明确数据流处理过程。通过gstreamer多媒体数据协商机制和同步机制,pipeline能够很好的地处理流式数据。

2、插件用于扩展功能,开发者可以灵活利用已有插件,而且还可以自定义特定功能插件。

               

二、Gstreamer基础概念

Gstreamer的基础概念有如下四个,了解这四个概念是我们将Gstreamer玩起来的前提

1、Elements

Elements是一个pipeline中的基本组成功能实体,通过将不同功能的elements连起来,就可以实现一个数据流处理功能。如图所示,通过将source filer sink三种element连起来,可以实现对pipeline中传输数据格式的过滤。

element主要有三种:

(1) source element,主要是作为一个pipeline中的source节点,是数据源。source element只有src pad,即只有输出口。

(2) sink element ,作为pipline的end节点 。sink element 只有sink pad,即只有输入口。

(3) common element,作为pipline中的中间数据处理单元,既有sink pad,也有src pad,通常有:Filters, convertors, demuxers, muxers and codecs等

2、pad

pad是element的输入和输出,作为协商链接和数据传输用,链接只能是两个pad之间的,每个Pad都可以限定支持的数据格式。当两个不同Pad之间的格式匹配,两个Pad就可以进行链接,并传输数据。

3、bin和Pipeline

bin是element的一个集合,bin中的element理应互联,从而使bin也能提供某种功能,由于bin是element的子类,所以所有的element的操作,bin几乎都继承了。

pipeline是一个完整的流式数据处理流程,可以看成一个顶级的bin。pipeline如下图所示

           

4、通信

Gstreamer为应用提供了几种通信机制:

(1)buffer 用于element之间数据传递,buffer中包含的是媒体数据,buffer的传输方向永远是从src pad 到sink pad的,即向下传输。

(2) event element之间或者application到element的信息传输,包含的是控制数据。event既可以向下也可以向上传输。

(3)message 由element向application传输,用于传输 errors,tags,state changes, buffering state, redirects等信息。

(4)queries 通常由application向pipeline发送,用于请求一些持续时间和播放点等信息。queries的应答是同步的。element也可以使用queries来向相邻element请求相应的信息

这边只做简单的介绍,详细的可以查阅Gstreamer 官方用户手册

https://gstreamer.freedesktop.org/documentation/index.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gstreamer基础知识介绍 的相关文章

  • JNI native函数名称问题

    本地 c 43 43 函数名称是规则是 xff1a Java 包名称 xff08 或类名称 xff09 函数名称 如 xff1a c 43 43 对应的函数名称为 xff1a Java NumberJNICpp average 61 61
  • 如何升级PowerShell

    https www cnblogs com wenBlog p 6198354 html 安装Windows PowerShell 3 0 1 安装Microsoft NET Framework 4 0的完整安装版本 xff08 dotNe
  • 系统添加根证书

    How to add CA to system root Reference KERIOOverview If you want to send or receive messages signed by root authorities
  • C++备忘录092:简单的enum到string的方法?

    godbolt span class token macro property span class token directive keyword include span span class token string lt strin
  • 用递归算法计算鸭子数

    问题描述 xff1a 一个人赶着鸭子去每个村庄卖 xff0c 每经过一个村子卖去所赶鸭子的一半又一只 这样他经过了七个村子后还剩两只鸭子 xff0c 问他出发时共赶多少只鸭子 xff1f 经过每个村子卖出多少只鸭子 xff1f xff08
  • 解决Linux下同时使用有线和无线/4G网络时,网络连接的优先级问题

    1 查看当前网关信息 ip route show 显示如下 xff1a 可以看到前两行default开头的就是默认网关 192 168 1 1是我的有线网关 xff0c 172 28 0 1是wifi网关 原来是有线网关的优先级更高导致的问
  • iOS UITableViewCell 高度自适应的解决方案

    span class token comment 设置预加载cell高度 span tableView span class token punctuation span estimatedRowHeight span class toke
  • Swift REPL

    swift 打开终端 xff0c 输入swift xff0c 启动swift swift Welcome to Apple Swift version 5 2 4 swiftlang 1103 0 32 9 clang 1103 0 32
  • xmpp 注册Registration

    在客户端上开发xmpp的注册功能 xff0c 即带内注册 带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号 相反的概念是带外注册 xff08 out of band registration xff09 xff0c 例
  • 六招让你的Ubuntu马上提速

    Ubuntu的启动速度非常快 xff0c 按了开机键之后很快就进入桌面 但我们仍然可以充分利用内存 xff0c 通过多种方法让开机速度更快 某些方法真的可以提速 xff0c 对于旧电脑的效果尤其明显 选用轻量级的桌面环境 xff0c 关闭不
  • 缺少libtinfo.so.5解决办法

    svn error svn This client is too old to work with working copy 39 39 You need to get a newer Subversion client or to dow
  • UITableViewCell动态高度设置

    UITableViewCell的高度在默认状态下能表现的的东西很少 xff0c 而且在复用的时候由于需要展示的信息不一定 xff0c 所以需要动态的调节Cell的高度来满足我们对不同内容的展示 在IOS8之前 xff0c 这需要手动进行计算
  • iOS: CGContext的函数CGContextAddQuadCurveToPoint

    void CGContextAddQuadCurveToPoint CGContextRef c CGFloat cpx CGFloat cpy CGFloat x CGFloat y
  • 怎样在android各级打印backtrace

    如何在android各层打印backtrace http janbarry0914 blogspot hk 2014 07 androiddump call stack html C 43 43 中 xff1a include lt uti
  • HOG特征(Histogram of Gradient)学习总结

    最近在做的项目有用到HOG 43 SVM这一方面的知识 xff0c 参考相关论文和网上一些博文在此对HOG特征进行下总结 参考资料 xff1a HOG的经典论文 xff1a Dalal N Triggs B Histograms of or
  • 递归-角谷定理

    问题描述 xff1a 角谷定理 输入一个自然数 xff0c 若为偶数 xff0c 则把它除以2 xff0c 若为奇数 xff0c 则把它乘以3加1 经过如此有限次运算后 xff0c 总可以得到自然数值1 求经过多少次可得到自然数1 如 xf
  • iOS之自定义导航按钮UIBarButtonItem的样式

    在一个APP中导航的重要性和方便性自然不需要多说了 xff0c 由于系统的导航用起来实在不怎么友好 xff0c 一直想抽个时间把导航学习下 由于投入到工作的时间多些 xff0c 懒懒散散的一直都是用的时候才去找度娘 xff0c 一直没来个总
  • IOS学习之一个示例弄懂代理(delegate)和协议

    转自http blog csdn net pony maggie article details 25655443 代理和协议的语法这里不赘述 xff0c 自己查资料 这个demo的思路是这样的 xff0c 有一个A类 xff0c 这个类不
  • ios中使用 NSJSONSerialization对 json数据的解析

    ios5中apple增加了解析JSON的api NSJSONSerialization 通过该类 xff0c 我们可以完成JSON数据与 NSDictionary 和 NSArray 之间的转化 网上已经有人做过测试 xff0c NSJSO
  • 【Xcode】undefined symbols错误总结

    http blog csdn net nextstudio article details 8919241 今天在使用ZBar的时候 xff0c 报了很多undefined symbols错误 特意总结一下这类错误 1 framework缺

随机推荐

  • GitHub第三方资源库整理(OC篇)

    http www jianshu com p a1c3b7d5bab1 随着GitHub star 的项目越来越多 xff0c 而且之前也没有整理 xff0c 所以找起来特别麻烦 xff0c 于是就有了这篇文章 xff0c 一是方便我自己查
  • 整理的一些swift开源项目,仅供学习交流!!

    1 swift3 0开发的自学英语社区app 2 https github com netyouli 3 六阿哥的开源项目 xff0c 均已上架 新版剑三壁纸库app xff0c 使用swift开发 使用swift语言写的一款新闻资讯类的a
  • 令世人惊叹的服务器端 Swift!

    转自 xff1a http www code4app com blog 822721 634 html 时至今日 xff0c Swift 已然演变成了一门开源 跨平台的编程语言 xff0c 有许多个团队正在竞相利用 Swift 语言能够用于
  • 33 个 2017 年必须了解的 iOS 开源库

    http www cocoachina com ios 20170208 18647 html 本文翻译自Medium xff0c 原作者为Pawe Bia ecki 照片版权 xff1a xff08 Unsplash Markus Pe
  • 整理的一些iOS 开源框架

    1 一个拥有多种优雅风格的搜索控制器 https github com iphone5solo PYSearch
  • Windows端通过Vscode或PowerShell连接linux服务器,打开图形界面的程序

    问题 Windows主机不进行任何配置ssh连接到linux服务器上 xff0c 打开图形界面软件 xff0c 会出现下面的错误 xff1a gedit 46927 Gtk WARNING cannot open display 解决Win
  • 循环依赖问题终极解决方案

    今天下午给师兄抽云图数据的时候 xff0c 报错了 说到底还是C 43 43 太菜了 xff0c 调试了一会才发现是写了个循环依赖 xff0c 这四个字是这篇文章的重点 这个不是头文件重复包含的问题 xff0c 看下面的图可能一下就明白了菜
  • Linux ln命令、软链接和硬链接的区别

    前些天发现了一个巨牛的人工智能学习网站 xff0c 通俗易懂 xff0c 风趣幽默 xff0c 忍不住分享一下给大家 点击跳转到教程 Linux ln命令是一个非常重要命令 xff0c 它的功能是为某一个文件在另外一个位置建立一个同步的链接
  • mysql 查找配置文件 my.ini 位置方法

    前些天发现了一个巨牛的人工智能学习网站 xff0c 通俗易懂 xff0c 风趣幽默 xff0c 忍不住分享一下给大家 点击跳转到教程 个人备注 xff1a 不显示文件类型时 xff0c my ini 文件名就叫作 my xff0c 文件属性
  • VS2019 + CUDA10.1 安装和配置

    VS2019 43 CUDA10 1 安装和配置 1 CUDA 10 1 安装 1 cuda官方下载网址 xff0c 找到cuda版本为cuda10 1 xff0c 选择自己系统对应的版本下载安装程序 2 运行cuda 10 1 243 4
  • pip使用清华镜像下载

    pip使用清华镜像下载 在国内使用pip安装python第三方包时 xff0c 可能会出现下载速度较慢的情况 xff0c 这时可以尝试从国内的pip镜像源下载这些包 xff0c 大大加快下载速度 xff1a 我们常用清华源 xff0c 在p
  • windows10安装Ubuntu20.04及界面图形化

    这里写自定义目录标题 windows10安装Ubuntu20 04及界面图形化一 安装前windows的配置二 ubuntu20 04系统安装三 ubuntu 20 04更换清华大学源四 中文汉化五 安装图形界面 xff0c VcXsrv的
  • opencv 获取rtsp原始码流代码

    opencv不仅可以获取解码后的图片数据 xff0c 还可以获取未经解码的原始码流数据 这样为使用其他硬解码器提供方便 在编译opencv cmake时需要指定 D WITH FFMPEG 61 ON python 代码如下 xff0c 需
  • 通过Launchpad查找PPA仓库

    我们通常会通过查找安装命令得知一些仓库名 xff0c 我们还可以通过Ubuntu Launchpad网站查询更多信息 首先登录https launchpad net 然后搜索自己关心的ppa xff0c 例如我们搜索得到了ppa jonat
  • ffmpeg 中 rtsp相关源码解析(五)

    lt lt ffmpeg 中 rtsp相关源码解析 四 gt gt 简单介绍了rtp包是通过ff rtsp fetch packet来获取的 我们更深入地问一个问题 xff0c 那么对于vp8 h264等音视频编解码标准 xff0c 这些p
  • 庆祝博客访问量即将突破20万

    2018年开始更新博客 xff0c 到现在已有3年 博客访问量预计这周就突破20万 本来写这博客并没有特别的目的 xff0c 只是想记录在工作学习过程中遇到的问题 也没想到会有这么多的访问 从南京到无锡再到上海 xff0c 一次次突破 从0
  • ffmpeg 源码分析 解码流程

    以ffmpeg 3 4 中的ffplay 来举例 全局初始化 av register all avformat network init AVFORMAT 设置过程 avformat alloc context avformat open
  • post传数组

    业务中涉及批量删除 xff0c 就需要传多个id xff0c 用数组吧 在post中 xff0c 参数都是键值对的形式 xff0c 键和值都是string类型 xff0c 那么就需要把数组序列化为string的形式 Array toStri
  • 基于OpenCV+QT的实时视频传输显示工具(一)

    时常会找一些比较有趣的东西来看 xff0c 但一般都是看完尝试了事 xff0c 没怎么做出总结过 现在想想真是可惜 xff0c 这么多年来 xff0c 看得东西也不少 xff0c 但是留下的印记却很少 xff0c 结果就是找工作时 xff0
  • Gstreamer基础知识介绍

    由于deepstream是基于gstreamer的 xff0c 所以要想在deepstream上做拓展 xff0c 需要对gstreamer有一定的认识 以下主要介绍Gstreamer整体框架和Gstreamer基础概念 一 Gstream