创建Gstreamer插件

参考链接

一步一步创建GStreamer插件(ZZ)

配置步骤

  步骤基本与《一步一步创建GStreamer插件(ZZ) 》中所描述的相同,这里做简要整理

1、获取创建插件的模板gst-template
  如果没有安装git,则首先安装git:
  sudo apt-get install git-core
  再获取模板:
  git clone git://anongit.freedesktop.org/gstreamer/gst-template.git

2、产生文件gstexamplefilter.c gstexamplefilter.h
  进入目录gst-template/gst-plugin/src
  cd gst-template/gst-plugin/src
  ../tools/make_element ExampleFilter

  这里需要注意,我在windows下始终无法运行make_element,无论是cmd终端还是PowerShell,因此按照网上方法在windows中开启,具体流程参照win10上linux子系统的开启、升级及使用。开启Ubuntu终端后,windows下的盘符在更目录的mnt下。
  之后使用也会遇到一些问题,这里罗列一下:
  a) 开启的linux子系统是完全新系统,除了按照必要的包外,gstreamer也是需要在这里重新安装的;
  b) Linux平台下,将Windows格式文本转换成Linux格式,第一步使用vim打开文件,然后控制模式下输入:
  :set fileformat=unix
  c) autoreconf: not found,编译wayland时候出现这样的错误提示 “autoreconf: not found”, “No package ‘libffi’ found” ,原因linux系统缺少autoreconf工具,安装此工具
  sudo apt-get install autoconf automake libtool
  sudo apt-get install libffi-dev
  d) 解决configure.ac:172: error: possibly undefined macro: AC_MSG_ERROR,只需要
  apt-get install pkg-config
  

Linux环境下编译(.so)

3、修改Makefile.am文件 (注意:是src目录下的 Makefile. am)
  sudo gedit Makefile.am

plugin_LTLIBRARIES = libgstexamplefilter. la
######################################
libgstexamplefilter_la_SOURCES = gstexamplefilter.c
######################################
libgstexamplefilter_la_CFLAGS = $(GST_CFLAGS)
libgstexamplefilter_la_LIBADD = $(GST_LIBS)
libgstexamplefilter_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstexamplefilter_la_LIBTOOLFLAGS = --tag=disable-static
######################################
noinst_HEADERS = gstexamplefilter.h

4、进入目录gst-template/gst-plugin,修改文件autogen.sh进入上一层目录
  cd..
  编辑autogen.sh文件:
  sudo gedit autogen.sh
  在autogen.sh的开始添加:
  srcfile=src/gstexamplefilter.c

5、运行autogen. sh,产生Makefile文件
  ./autogen.sh

6、开始安装:
  ./configure
  make
  sudo make install
  src/.libs中有libgstexamplefilter.la、libgstexamplefilter. so

7、将插件加入到gstreamer库中把libgstexamplefilter. la、libgstexamplefilter.so这两个文件拷贝到系统目录中/usr/lib/gstreamer-xxx

  后续涉及到一些环境变量的设置以及缓存的更新,这部分我没测试过,需要的可以在看看参考文档进行测试。

Windows环境下编译(.dll)

  Writing gstreamer plugins in windows中有回答,但文档链接打不开,主要提到的是1、Create a new GStreamer project in VS as explained in the docs;2、Add the template sources of gst-template。

  Gstreamer详细指南-使用gst-template 创建最简单的插件中也有相关方法,但图片几乎都失效,但按照步骤做还是能完成的。
  新建一个dll工程,忘记过程可以看看使用VS2015 创建C++动态链接库并调用,将gstbase.c和gstbase.h复制到base工程目录下;在gstbase.c的开头加上如下宏:
  #define VERSION (“0.10.36”)
  类似vs2010 gstreamer开发环境安装配置环境,也就是添加share\vs\2010\libs\gstreamer-1.0.prop属性表,然后编译这个工程;将生成的dll复制到 lib\gstreamer-1.0\下,执行bin\gst-inspect-1.0.exe看看你的插件有没有找到。
  

  

发布了24 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/yangjf91/article/details/88654853