音视频
文章平均质量分 76
jamsShadow
这个作者很懒,什么都没留下…
展开
-
gstreamer 调度模式(pull/push)
gst将实际应用的每个功能模块抽象成元件,元件之间的连接是通过绑定在上面的pad来实现的。所以需要了解下具体数据是如何从一个元件流向另一个元件的。数据的流向可以从上游流向下游, 也可以下游去上游取。这两种方式分别对应的就是push mode 和pull mode。6.1 push模式(以视频解码显示为例) 大部分情况下都是工作在push mode。 所以重点介绍下 push mode,所谓的流向 实际上将上游元件的buffer指针传入到 下游元件的特定 函数, 这个函数就是 元件pad...原创 2021-01-13 15:07:31 · 2361 阅读 · 2 评论 -
gstreamer playbin3的工作机制
playbin3的调用流程如图: 最上层可以分为三个部分 ,playbin的任务负责创建下面三个bin, 然后进行连接,连接的机制依赖于gsingal。这三个bin分别为urisourcebin 、decodebin3、playsink。其中urisourcebin 的任务 负责从文件或者网络流中读取文件 并识别封装格式。decodebin3 则负责将urisourcebin读取的数据解码成raw video audio text。playsink 则负责将音视频进行同步 并输出到对应的设备...原创 2021-01-13 14:56:37 · 1432 阅读 · 0 评论 -
gstreamer插件的工作机制
Gst强大就是来自于 开发者可以按照给出的模板 添加和生产各种各样功能强大的插件, 然后将插件加入到gst的统一管理系统中,这样在应用端就可以在插件工厂中 找到插件,并利用插件的功能,Gst的插件都是在运行的时候进行动态加载的。 gst_init(&argc,&argv);初始化gst函数库,建立内部路径列表,注册内置元件以及加载标准的plugins。总体的流程就是在调用gst_init会根据编译安装的环境变量(g_getenv("GST_REGISTRY_1_0"...原创 2021-01-13 14:49:53 · 513 阅读 · 0 评论 -
理解GStreamer源码基础
gst是基于Gobject来开发的,Gobject提供 类,继承 对象注册 和gst信号机制的基础。GStreamer代码里面有充斥着Goject的代码,Gobject也是理解Gstreamer各个模块的基础。需要了解的是几个方面, 如何向GOject注册一个新类, 如何创建一个新类, 一个类如何继承另一类。3.1了解如何向Goject注册类以video_decoder类为例#define GST_TYPE_VIDEO_DECODER \ (gst_video_decoder_g...原创 2021-01-13 14:47:03 · 1420 阅读 · 0 评论 -
基于Gstreamer的应用
应用上层了解如何基于gstreamer 的api来构建一个视频播放的应用2.1 基于gstreamer api的MP3 播放基本的一个流程1、初始化gst, 开始一个主的循环,2、定义一个pipeline 和 pipeline里面需要的元素比如有source decoder sink等。3、设置必要组件的一些信息。4、获取总线,监听总线的消息。5、调用gst_bin_add_many将各个element 组成pipeline,然后调用gst_element_link_many,.原创 2021-01-13 14:42:21 · 636 阅读 · 0 评论 -
Gstreamer的基本概念
gstreamer是linux上面的一个音视频框架,具有结构清晰,面向对象,可扩展性高,内存传递高效等优点。gst优点来自于其设计的结构分明的框架,面向对象是通过继承Glib来实现的,可扩展性是基于插件机制来达到的,内存传递高效是基于其调度模式实现。通过本专题希望能够达到对gstreamer的基本概念有了解,知道如何基于gstreamer创建一个应用,理解Gstreamer插件的工作原理,了解各个插件间如何协作以及调试问题的基本方法。 首先从宏观上介绍下gstreamer的基本概念,然后看看...原创 2021-01-13 14:39:07 · 818 阅读 · 0 评论