首页 > 技术文章 > GStreamer 编写插件-plugin 2021-1-11

adiTech 2021-01-11 17:03 原文

Gstreamer plugin的编写例子。

本文将从0开始编写一个plugin。这里只针对Ubuntu操作系统

记录一下经常出现的问题:

 Dependency gstreamer-1.0 found: NO found 1.16.2 but need: '>=1.19'

meson 采用了gstreamer-1.0 的老版本,解决办法:就是在PKG_CONFIG_PATH添加gst-build 目录下的meson-uninstalled

export PKG_CONFIG_PATH=/home/edward/software/gstreamer/gst-build/build/meson-uninstalled$PKG_CONFIG_PATH

 查询一下:

echo $PKG_CONFIG_PATH
/path/to/gst-build/build/meson-uninstalled:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/home/edward/software/gstreamer/gst-build/prefix/lib/pkgconfig

在这个目录下,gstreamer-1.0-uninstalled.pc 这个文件是pkg_config 用来发现和标记gstreamer的目录,Cflags和Libs两个参数是核心参数,也是我们在配置g++或编译时的最关键的选项。

 

 

一、下载plugin template

构建plugin可以手动完全写,也可以先下载一个模板,通过模板来构造自己的plugin。通过模板来构造会节约很多时间。

git clone https://gitlab.freedesktop.org/gstreamer/gst-template.git

当然,首先需要安装了git。 ubuntu直接通过apt安装:apt-get install git

上面git命令将形成gst-template目录,在gst-template/gst-plugin/ 目录的结构也就是通常一个plugin的目录结构

 

记录:

#define GST_TYPE_MYFILTER (gst_my_filter_get_type())
G_DECLARE_FINAL_TYPE (GstMyFilter, gst_my_filter, GST, PLUGIN_TEMPLATE, GstElement)
/*
#define MY_APP_TYPE_WINDOW my_app_window_get_type ()
G_DECLARE_FINAL_TYPE (MyAppWindow, my_app_window, MY_APP, WINDOW, GtkWindow)*/

 其中GST_TYPE_MYFILTER GstMyFilter是MyApp的窗口,GST_PLUGIN_TEMPLATE是一个新的宏。

G_DECLARE_FINAL_TYPE 在 gtype.h 中定义

GstMyFilter *filter = GST_PLUGIN_TEMPLATE (object);

filter的赋值需要如上修改。

 

推荐阅读