GStreamer 高阶学习(一)

GStreamer 高阶学习(一)

例子插件的生成

参考git项目可以编写简单的例子插件:
examplefilter

插件编写前的学习资料


GStreamer 插件编写的语法

GObject对象系统

GLib中最有特色的是它的对象系统--GObject System,它是以Gtype为基础而实现的一套单根继承的C语言的面向对象的框架。
在运用任一GType和GObject函数之前必需运行g_type_init()函数来初始化类型系统。
GLib+GTK+介绍详细参考:https://www.ibm.com/developerworks/cn/linux/l-gobject/
不想写插件想用appsrc/appsink+opencv的图像处理参考:http://blog.iotwrt.com/media/2017/08/23/opencv-gstreamer/


GStreamer 插件参考书

主要参考两本:
《Gstreamer应用程序开发手册》,file:///W:/Book/GStreamer应用程序开发手册.pdf,存在一些打印问题。原版为Gst官网的指导更准确:https://gstreamer.freedesktop.org/documentation/application-development/basics/helloworld.html?gi-language=c


GStreamer 高阶概念

介绍了一些,GStreamer的高阶使用方法有些还需要实战自己用。

目录
11. 位置跟踪(Tracking)与位置偏移 (Seeking)--ok
11.1. 询问:得到一个流的长度或位置
11.2. 事件:位置查找
12. 元数据(Metadata)--ok
12.1. 读取元数据
12.2. 写入标签
13. 接口----not ok
13.1. URI 接口
13.2. Mixer 接口
13.3. Tuner 接口
13.4. 色彩平衡 (Color Balance)接口
13.5. 属性探测 (Property Probe)接口
13.6. X 覆盖(X Overlay)接口
14. GStreamer 中的时钟----not ok
14.1. 时钟提供者(providers)
14.2. 从时钟(Clock slaves)
15. 动态控制参数
15.1. 开始
15.2. 控制参数 (parameter control)的设定
16. 线程(Threads)----study
16.1. 什么情况下你想强制一个线程?
16.2. 时序安排(Scheduing)的 GStreamer
17. 自动插件(Autoplugging)
17.1. 识别流的 MIME 类型---ok
17.2. 媒体流类型检测
17.3. 动态管道插件(Plugging)---to do
18. 管道(Pipeline)控制
18.1. 数据探测
18.2. 手动增加或删除一个管道中的数据
18.2.1. 新增或捕获数据
18.2.2. 强制格式
18.2.3. 示例程序
18.3. 在你的应用程序中嵌入静态元件 (static element)

问题

  1. 12--GStreamer 系统采用什么机制来实现自动检测数据流的媒体
    格式,以及怎样产生一个管道,该管道包含了可以播放该数据流的解码器。
    --MIME:.媒体流类型检测
    一个加载进系统的元件必须提供其源衬垫和接收衬垫支持的 MIME 类型。
    GStreamer 中的插件实现了类型检测的功能。一个实现了这样功能的插件将会
    提交一个 mime 类型,该媒体类型将用到的可选 的文件扩展,以及一个类型检测函数。一旦插件中的类型检测函数被调用,插件将检查媒体流中的数据是否匹配特定的模式。这些模式标记了mime类型中所识别 的媒体类型。如果类型检测函数被调用,它会返回给类型检测元件,告知哪种媒体类型可以被识别,以及数据流与检测结果的吻合程度。一旦所有内置类型检测函数 的插件都执行完类型检测函数,类型检测元件将会告诉应用程序它对数据流格式的判断。
  2. 16.1---When would you want to force a thread?.
    https://gstreamer.freedesktop.org/documentation/application-development/advanced/threads.html?gi-language=c#scheduling-in-gstreamer

pipeline手动操作

动态修改pipeline元件的方法

问题

  1. How to insert data from an application into a pipeline
  2. How to read data from a pipeline
  3. How to manipulate the pipeline's speed, length and starting point
  4. How to listen to a pipeline's data processing.
posted @   wuya178  阅读(729)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示