![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
gstreamer
chengwei_peng
想折腾却不会折腾的阿伟
展开
-
gstreamer学习笔记---element流程总结
element总结 前面几篇较详细的介绍了v4l2src、videodecoder编码、gst-omx以及videosink显示几个element,介绍它们与其他element交互的操作流程,这一次,我们对之前的文章做一个总结。element创建 由于一开始gstreamer在加载的时候,会扫描/usr/lib/gstreamer-1.0目录下的库并加载,识别其中的feature,并记...原创 2018-09-26 22:09:40 · 3741 阅读 · 1 评论 -
gstreamer学习笔记---显示videosink
videosink 使用gstreamer播放视频,在gst-launch-1.0添加参数video-sink=“xxx”,即可指定显示的element,那么显示的element一般操作又是怎样的呢,它是如何知道它将要显示的数据格式、分辨率、帧率等参数呢,下面我们一起来学习一下。 为了减少平台硬件相关性,下面将通过fbdevsink了解videosink,而videosink又是继承与ba...原创 2018-09-26 22:07:54 · 7590 阅读 · 0 评论 -
gstreamer学习笔记---gst-omx
gst-omx流程 以h264dec为例,了解gst-omx流程。 在进入到具体的OMX类element之前,先了解omx相关的element是如何登记到gstreamer。 通过gst-omx中src目录下的Makefile.am可以了解到,该package最终将会编译为一个叫libgstomx.so的库,库是gstreamer element库,将会存放在机器端的/usr/l...原创 2018-09-26 22:05:05 · 10060 阅读 · 7 评论 -
gstreamer学习笔记---demux使用
在使用gstreamer的过程中,相信很多是都通过gst-launch-1.0直接使用playbin或者自建pipeline完成相应的播放测试,反而很少的会自己编写代码,其实,gst-launch-1.0帮助我们做了很多工作,在自己编写程序的时候,反而会忽略掉,比如我们要说的demux。 demux,解复用器,我将它理解为解封装,在播放封装音视频的时候,一般都会需要先进行解封装,然后在解...原创 2018-08-30 13:27:19 · 8173 阅读 · 0 评论 -
gstreamer学习笔记---编码videoencoder
既上一节的《gstreamer学习笔记—v4l2src》之后,我们这一次,学习gstreamer的编码流程。稍微了解gstreamer的小伙伴都知道,gstreamer具备强大的音视频处理功能,相信很多小伙伴也都会使用gstreamer播放或者录制视频等操作,但是了解它的编码框架的,可能又会少一些,在写这篇文章之前,我也不了解,那么,接下来就让我们一起学习gstreamer的编码框架吧。 ...原创 2018-08-25 11:31:27 · 7923 阅读 · 6 评论 -
gstreamer学习笔记---v4l2src
v4l2src element源码位于gst-plugins-good-xxx/sys/v4l2/gstv4l2src.c,v4l2src主要是从v4l2设备获取视频数据的element,基于v4l2框架采集相应设备的数据。下面将学习它的结构,了解它是如何与下游element适配、传输数据,只涉及到v4l2src相关的操作。 v4l2src实例创建 在测试过程中,我们使用的是uv...原创 2018-08-19 18:17:25 · 11416 阅读 · 10 评论 -
gstreamer学习笔记---pad定义、连接、流动
pad相当于element的接口,各个element就是通过pad连接进行传输数据,同时pad会通过caps限制特定的数据类型通过,只有当两个pad的caps数据类型一致时才可以建立连接。那么pad在element又是怎么创建以及使用的呢,下面一起来分析一下。 一、pad定义 在理解pad的定义之前,我们先来看看,pad都有那些信息。Pad Templates: SINK ...原创 2018-08-10 19:53:16 · 11330 阅读 · 9 评论 -
gstreamer学习笔记---plugin注册流程分析(超详细)
通过了解Gstreamer框架,我们可以知道,每个处理单元都是一个plugin,那么,plugin在gstreamer是怎么注册到系统中的呢,gstreamer又是如何知道,现在有哪些plugin,同时具备某一功能的plugin又有哪些,下面,我们来通过阅读源码,一起分析一下。 一、从plugin_init()函数说起通过gstreamer的一些文档,我们可以了解到,插件,直接就是...原创 2018-08-01 15:07:00 · 7870 阅读 · 0 评论 -
gstreamer学习笔记---Gobject类对象
一、Gobject类定义 Gstreamer框架是基于插件的,同时插件是可以动态的注册、创建,gstreamer基于Gobject开发,下面来了解一下gstreamer是如何通过Gobject完成自定义类的注册。 在每个类的c文件中,都会有以下这样的一个宏定义:G_DEFINE_TYPE (GstV4l2Allocator, gst_v4l2_allocator, G...原创 2018-07-28 16:53:56 · 3542 阅读 · 0 评论 -
gstreamer学习笔记---如何创建gstreamer插件?
gstreamer的功能强大是毋庸置疑的,它采用C语言编程,但是通过gObject,将各插件封装成面向对象编程的工具。那么如何创建gstreamer呢,当然,可以自己手动写,但是,gstreamer有提供一个叫make_element的工具,我们为什么不直接使用这个工具帮助我们生成所需要的插件呢。 1.获取创建插件的模板 gst-template 首先要确定你的PC安装了...原创 2018-07-12 17:52:46 · 3736 阅读 · 3 评论 -
gstreamer学习笔记---typefind功能流程简单分析
使用gstreamer播放音视频都知道,当我们直接通过playbin播放视频的时候,playbin会根据当前播放的音视频数据自动查找相应的element添加到pipeline进行对数据进行下一步处理,那么,当playbin在解析数据的时候,发现上一个element发现需要某一个caps的时候,是谁来查找,究竟有那个element支持这个caps的处理,然后又选择它添加到pipeline中?这个...原创 2018-09-27 11:59:56 · 2652 阅读 · 3 评论