zoukankan      html  css  js  c++  java
  • openwrt gstreamer实例学习笔记(一.初始化gstreamer)

    GStreamer 是一个非常强大而且通用的流媒体应用程序框架。 GStreamer所具备的很多优点来源于其框架的模块化: GStreamer能够无缝的合并新的插件。 但是, 由于追求模块化和高效率, 使得GStreamer在整个框架上变的复杂, 也同时因为复杂度的提高, 使得开发一个新的应用程序显得不是那么的简单。

    由于工作需求,因此笔者开启了gstreamer构建音频播放器之路!

    首先openwrt下面make menuconfig 要选择gstreamer必要的插件库,由于openwrt下面已经很好地支持了gstreamer的大部分插件,因此使得openwrt下面基于gstreamer开发变得轻松一点。

    第一步:写程序

    当我们准备写一个GStreamer应用程序时,你仅需要通过包含头文件gst/gst.h 来访问库函数。除此之外,不要忘记初始化GStreamer库。

    #include <stdio.h>
    #include <glib.h>
    #include <gst/gst.h>

    int main (int   argc,   char *argv[])
    {
      const gchar *nano_str;
      guint major, minor, micro, nano;

      gst_init (&argc, &argv);

      gst_version (&major, &minor, &micro, &nano);

      if (nano == 1)
        nano_str = "(CVS)";
      else if (nano == 2)
        nano_str = "(Prerelease)";
      else
        nano_str = "";

      printf("This program is linked against GStreamer %d.%d.%d %s ", major, minor, micro, nano_str);

      return 0;
    }

    以上程序是初始gstreamer,并打印gstreamer的版本号!

    第二歩:

    编写openwrt 下面makefile

    include $(TOPDIR)/rules.mk

    #LIB_GS=/home/xuyonghong/share/ffmpeg/car_radio_firmware/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib
    PKG_NAME:=gst-test
    PKG_RELEASE:=1

    PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

    include $(INCLUDE_DIR)/package.mk

    define Package/gst-test
        SECTION:=multimedia
        CATEGORY:=Multimedia
        DEPENDS:=+gstreamer1* +glib2    +libpthread
        TITLE:=gstreamer test demo
    endef


    define Package/gst-test/description
        If you can't figure out what this program does, you're probably
        brain-dead and need immediate medical attention.
    endef

    TARGET_CPPFLAGS:=
        -I$(STAGING_DIR)/usr/include/gstreamer-1.0
        $(TARGET_CPPFLAGS)


    TARGET_CPPFLAGS:=
        -I$(STAGING_DIR)/usr/include/glib-2.0
        $(TARGET_CPPFLAGS)


    MAKE_FLAGS +=
        CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(PKG_CONFIGS) -ffunction-sections -fdata-sections"
        LDFLAGS="$(TARGET_LDFLAGS) $(PKG_CONFIGS) -Wl,--gc-sections"

        PKG_CONFIGS:=
            `pkg-config --cflags --libs glib-2.0 gthread-2.0  gstreamer-1.0`

    define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
    endef


    define Package/gst-test/install
        $(INSTALL_DIR) $(1)/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/gst-test $(1)/bin/

    #   
    #$(CP) $(LIB_GS)/libgstreamer*  $(1)/bin

    endef

    $(eval $(call BuildPackage,gst-test))

    第三步:make编译

    第四步;测试之

    root@OpenWrt:/#
    root@OpenWrt:/# chmod +x gst-test
    root@OpenWrt:/# ./gst-test
    This program is linked against GStreamer 1.2.3
    root@OpenWrt:/#
    root@OpenWrt:/#

  • 相关阅读:
    2-10 案例4:像素读取写入
    2-8 案例3:不同图片质量保存
    2-7 案例2:图片写入
    Linux文件操作实用笔记
    Linux文件操作实用笔记
    Linux 文件系统基础
    Linux 文件系统基础
    一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
    一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
    30 个与程序猿有关的成语
  • 原文地址:https://www.cnblogs.com/xuyh/p/4561254.html
Copyright © 2011-2022 走看看