
GStreamer
文章平均质量分 94
芥末的无奈
这个作者很懒,什么都没留下…
展开
-
GStreamer 简明教程(十一):插件开发,以一个音频生成(Audio Source)插件为例
GStreamer 中插件分为三种:Source、Filter 和 Sink,在上一章中我们学习了如何写一个 Filter 插件,可以说 Filter 插件是最简单的,因为它只需要关系数据的处理逻辑,而 Source 和 Sink 就更加复杂一些。本章我们来讨论如何写一个 Source 插件。本章所提及的代码你可以在my_plugin找到。以上,我们就将 AudioSource 如何生成数据的逻辑大致讲了一遍,运行之后可以听到正弦波的声音。原创 2025-04-25 22:34:51 · 1222 阅读 · 0 评论 -
GStreamer 简明教程(十):插件开发,以一个音频特效插件为例
GStreamer 简明教程系列已经更新了 9 期,这些教程基本是我个人在学习官方教程中的一些理解和总结。官方的基础教程中远不止 9 期,但后续的基础教程我决定不再更新了,因为后面的内容基本还是围绕如何使用 GStreamer 中的某种功能来展开的,它不涉及 GStreamer 底层代码的实现逻辑。回看我最初学习 GStreamer 的目的,最重要是掌握 GStreamer 的设计思想,学习消化后以便自己能设计出一套类似的音视频框架,因此我对 GStreamer 底层的实现逻辑更感兴趣。原创 2025-01-21 18:43:12 · 1540 阅读 · 0 评论 -
GObject 简明教程(二)
最近,我一直在深入学习 GStreamer(相关教程可以从我主页中看到)。在探索其复杂的设计逻辑时,我意识到需要深入研究 GStreamer 的源码。而因为 GStreamer 是基于 GObject 开发的,掌握 GObject 的基本概念就显得尤为重要。本文整理自,简化了细节,保留了一些关键内容,以便更好地理解。上一章GObject 简明教程(一)我们介绍了的前面五章。今天我们继续,将后面几章也进行总结和更新。原创 2025-01-07 19:21:52 · 696 阅读 · 0 评论 -
GObject 简明教程(一)
最近,我一直在深入学习 GStreamer(相关教程可以从我主页中看到)。在探索其复杂的设计逻辑时,我意识到需要深入研究 GStreamer 的源码。而因为 GStreamer 是基于 GObject 开发的,掌握 GObject 的基本概念就显得尤为重要。本文整理自,简化了细节,保留了一些关键内容,以便更好地理解。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2024-12-21 19:04:14 · 1462 阅读 · 3 评论 -
GStreamer 简明教程(九):Seek 与跳帧
本文对内容进行说明,重点是理解 GStreamer 中 seek events 和 step events。原创 2024-11-16 22:26:12 · 996 阅读 · 0 评论 -
GStreamer 简明教程(八):常用工具介绍
本章内容是对 GStreamer 官方教程中第九、十和十一三章的一个介绍。这几章涉及的代码不多,主要是介绍 GStreamer 中工具,包括 GstDiscoverer、gst-discoverer-1.0、gst-launch-1.0、gst-inspect-1.0 、日志工具等。这块可以扩展的内容比较少,但我又不想漏了这块,因此本文只是做一些粗粒度的总结。原创 2024-11-08 10:00:29 · 1310 阅读 · 0 评论 -
GStreamer 简明教程(七):实现管道的动态数据流
本章基于进行说明和补充,以便读者掌握如何动态的插入或者提取出 Pipeline 中的数据。本章内容并不复杂,它引入了两个新的 Element:appsrc 和 appsink。通过这两个 Element 我们可以实现动态管理数据流。由于官方教程代码在本人机器上总是运行失败,因此我对它做了一些修改,具体代码在本文介绍了 appsrc 和 appsink 的使用,通过使用 Element Signals 和 Element Actions 机制,我们可以动态地与元素进行交互。原创 2024-10-16 21:25:08 · 1634 阅读 · 0 评论 -
GStreamer 简明教程(六):利用 Tee 复制流数据,巧用 Queue 实现多线程
本章基于官方教程进行说明和补充。本章内容并不复杂,引入了两个新的 Element:Tee 和 Queue。Tee 用于复制数据, Queue 创建线程让 Pipeline 的一部分在另外线程中运行。由于官方教程在本人机器上总是无法运行,我对它做了一些修改,具体代码在。原创 2024-10-12 17:59:53 · 1469 阅读 · 0 评论 -
GStreamer 简明教程(五):Pad 相关概念介绍,Pad Capabilities/Templates
本章基于官方教程进行一些说明和补充。本来想对进行讨论的,但我的机器上安装 gtk 后运行程序总是崩溃,因此放弃。在前面的章节中也有泛泛地提到过 Pad,例如GStreamer 简明教程(二):基本概念介绍,Element 和 Pipeline和GStreamer 简明教程(三):动态调整 Pipeline。接下来这一章,我们将对 Pad 这个在 GStreamer 中非常重要的概念进行详细阐述。在 GStreamer 中,Pad 是连接不同元素之间的接口,允许它们相互通信和传递数据的概念。原创 2024-08-25 21:31:22 · 1470 阅读 · 0 评论 -
GStreamer 简明教程(四):Seek 以及获取文件时长
如何查询 Pipeline 的信息,例如时长,当前播放位置等如何进行 seek 操作。原创 2024-08-21 20:15:12 · 1255 阅读 · 0 评论 -
GStreamer 简明教程(三):动态调整 Pipeline
本章来了解 GStreamer 动态调整 Pipeline 的流程,这章代码略长,略微有些复杂,各位看官稍稍耐心些。在src参数表示触发信号的 GstElement,在本例中通常为 uridecodebin,因为它是唯一附加了该信号的元素。信号处理函数的第一个参数始终是触发信号的对象。new_pad参数表示刚刚添加到src元素的 GstPad。通常,我们希望连接的就是这个 pad。第一次,添加的 pad 负责输出视频数据第二次,添加的 pad 负责输出音频数据data。原创 2024-08-17 15:10:00 · 1414 阅读 · 0 评论 -
GStreamer 简明教程(二):基本概念介绍,Element 和 Pipeline
在上一章中我们成功的搭建了 GStreamer 的调试环境,并运行了 Hello World 程序。本章我们将介绍 GStreamer 中的基本概念,包括 Element 和 Pipeline。另外,还介绍使用 gst-inspect-1.0 程序来查看插件的基本信息。GStreamer 是基于插件的架构,它处处离不开插件,你几乎所有功能都是被封装在插件之中。因此如何查询插件信息是我们需要掌握的。原创 2024-08-13 21:34:47 · 1896 阅读 · 0 评论 -
GStreamer 简明教程(一):环境搭建,运行 Basic Tutorial 1 Hello world!
本系列文章将纪录学习 [GStreamer] 的过程。多媒体处理是一个复杂的任务,[GStreamer] 的管道架构可以将复杂的任务以「图」的形式模块化的进行处理,它足够灵活。学习 [GStreamer] 这种架构思想,可以帮助我扩展视野,面对复杂任务如何给出一套灵活可靠的框架。掌握 [GStreamer] 对求职有所帮助,如果你对 [GStreamer] 很熟悉,很多音视频岗位是可以加分的。原创 2024-08-09 22:09:56 · 2258 阅读 · 0 评论 -
GStreamer 源码编译,在 Clion 下搭建调试环境
最近在学习 GStreamer,官方提供了一些,本人希望能够断点调试,以便学习代码逻辑。本文记录如何在 Clion 搭建 GStreamer 源码编译、调试环境。原创 2024-06-15 17:52:01 · 780 阅读 · 0 评论