• GStreamer环境搭建篇


      GStreamer是一套强大的多媒体中间件系统,跟FFmpeg功能类似。官网链接点这儿

      各个Linux发行版(Ubuntu,fedora),大都集成了GStreamer相关工具,而作为软件层次结构最上层的播放器,几乎都是直接调用GStreamer相关库/插件来快速软件开发。

    例如,播放器这类app的开发,只需重点关注各种菜单绘制、进度条更新、开始/暂停控件等,来响应用户操作,真正工作的大头都交给GStreamer库去干,例如demux,decode,render,

    这种上-中-下的开发模块(软件架构)层次分明,不同(擅长不同业务)人干不同的事情,避免了重复造轮子(让做UI开发的再去重新开发个解码器或解码插件,肯定不现实)。

      本篇的目标,主要介绍GStreamer源码如何编译成so库和bin,而不使用发行版自带的已构建好的库。因为Linux发行版常常滞后,而随同其发布时构建的GStreamer库也跟随滞后。

    1. 环境

      本人在Win10下虚拟机中进行代码构建、调试、验证,具体环境为:win10 + virtualbox + ubuntu16.04LTS + gstreamer1.17.0.1

      由于已是一年前做视频编解码插件时整的东西,有些知识点已经忘记了,但本人尽力保证信息的正确和完备性,特贴到博客中以备后面需要时查阅,有疑问的朋友们可以留言询问。

    2. 源码下载

      两种方式,一种是去官网下载,另外一种是去github上下载。前者提供各个版本的发行版(不带历史提交信息),后者是社区开发阶段中的仓库,可以方便查看历史修改记录。

    3. 构建工具

      早版本(2016-8-12前,Release 1.9.1前)的GStreamer源码编译,使用CMake+make方式,后来切换到了meson+ninja,介绍说的是编译速度加快了很多,如下描述:

      

      貌似很多构建工具开始向meson和ninja切换,以后的开源包的编译可能会出现

    由这种方式:

      ./autogen.sh && ./configure && make && sudo make install
    变成了:
      meson build && ninja -C build && sudo ninja -C build install

    4. 构建前准备工作

      上面一小节中已经介绍了要使用meson工具来构建,但是ubuntu16.04LTS是不带这个工具的,因此需要安装这个工具或由源码编译后安装。下面介绍搭建时的一些注意点:

      4.1. python需要3.5以上版本,ubuntu16.04默认是2.7

      4.2. meson版本>=0.48

        meson的版本要求比较高,不能用apt-get直接安装。下载高版本的meson源码包(目前版本0.52.999),在meson包里面执行python3 setup.py install。

        安装meson时又出现setuptools问题(sudo apt-get install python3-setuptools,再将meson工具从/usr/local/bin/meson默认安装路径中拷到/usr/bin下)。

      4.3. meson build出错

        glib未安装 -> sudo apt-get install glib-2.0,后面仍出问题显示模块未安装(放弃,通过源码编译安装)。

        sudo apt-get install glib2.0这个可以安装。

      4.4. 其他东西安装:flex,bison,直接使用apt-get来安装

    5. 构建流程

      meson build -Dprefix=/usr/gst-dev    //利用meson.build生成文件meson.ninja,并放置于build目录
      ninja -C build             //进入目录,利用配置文件build.ninja编译
      meson install               //所有文件安装于/usr/gst-dev目录下

      其他常用命令

      meson build --reconfigure             //重新配置,例如安装路径的前缀-Dprefix

  • 相关阅读:
    SpringMVC上传文件异常 400 Required MultipartFile parameter 'files' is not present postman
    idea乱码但是线上ok 解决方法
    mysql查询所有子节点 非递归
    nacos设置了默认读不到原因
    c
    a
    b
    chrome developer tool 文章
    每日一库:JS.Class
    用Jquery获取解析获取URL参数地址
  • 原文地址:https://www.cnblogs.com/Dreaming-in-Gottingen/p/14337744.html
Copyright © 2020-2023  润新知