GStreamer编译安装——使用Cerbero从源代码编译

使用Cerbero从源代码构建

如果您只想使用GStreamer,请访问下载页面。 我们为Windows、macOS、Android和iOS提供预构建的二进制文件

Cerbero是开源项目的跨平台构建聚合器,为不同的平台、架构和发行版构建和创建本机包。它支持本机编译和交叉编译,可以在macOS、Linux和Windows上运行。

如果您:

  1. 想为Android、iOS或UWP做GStreamer开发,或者
  2. 必须构建GStreamer包以进行分发或部署,或
  3. 需要没有Meson端口的具有外部依赖项的插件

但是,如果您是想要处理GStreamer代码本身的开发人员 在Linux、Windows或macOS上,使用gst-build要方便得多。 请参阅使用介子构建

最低要求

Cerbero为所有平台提供无融资创业设施,但它仍然需要一个最低基础来引导。

Linux设置

在Linux,您只需要一个python>=3.6的发行版。Cerbero将 使用您的包管理器安装所有其他必需的包 引导程序

macOS设置

在macOS上,您需要安装以下软件:

  • XCode
  • Python 3.6+https://www.python.org/downloads/

Cerbero将在引导期间构建所有其他所需的包。

Windows安装程序

由于所需的包,Windows上的初始设置有点长 必须手动安装。您需要安装的详细步骤是 在页面的底部

下载来源

要使用Cerbero构建GStreamer,您首先需要下载Cerbero:

$ git clone https://gitlab.freedesktop.org/gstreamer/cerbero

这将构建最新的未发布GStreamer代码。

尽管存在setup.py,但此工具不需要安装。它是 通过cerbero-uninstalled脚本调用,该脚本应该被调用为 ./cerbero-uninstalled,或者你可以创建一个别名到它在你的.bashrc 文件。

您可以通过签出该标签来构建特定版本,例如git checkout 1.18.4。构建发布标签将导致Cerbero使用该版本 获取gstream er食谱时,tarball而不是git存储库 建筑。

您还可以构建最新的未发布的"稳定分支"代码,例如 1.18你会做:git checkout 1.18,或git clone -b 1.18 [...],这将 在构建gstream er配方时获取相应的稳定分支。

您还可以使用git工作树,这在构建时可能更方便 几个不同版本的gstream er,因为构建工件总是去 进入git存储库内的build目录。

引导到设置环境

在第一次使用cerbero之前,您需要运行bootstrap命令。此命令使用包管理器(如果可用)安装构建系统中缺失的部分,并在为Windows/MinGW或Android构建时下载必要的工具链。

请注意,这需要一段时间(在Windows上需要几个小时甚至更长时间)。

$ ./cerbero-uninstalled bootstrap

在Linux和macOS上,这将使用sudo对系统进行更改。

然后引导过程将安装或构建构建GStreamer所需的所有软件包。

构建GStreamer

要生成GStreamer二进制文件,请使用以下命令:

$ ./cerbero-uninstalled package gstreamer-1.0

这将获取和构建所有必需的GStreamer组件并为您的发行版创建包,然后将它们放在Cerbero源目录中。

可以使用以下命令检索要构建的支持包列表:

$ ./cerbero-uninstalled list-packages

包由0个(如果是元包)或更多组件组成,如果需要,可以单独构建。这些组件定义为单独的配方,可以列出:

$ ./cerbero-uninstalled list

要构建单个配方及其依赖项,请执行以下操作:

$ ./cerbero-uninstalled build <recipe_name>

或者在不构建其依赖项的情况下构建或强制重建配方,请使用:

$ ./cerbero-uninstalled buildone <recipe_name>

要擦拭一切并从头开始:

$ ./cerbero-uninstalled wipe

构建完成后,所有配方构建的二进制文件将安装在内部 Cerbero源代码树中build目录中的自动检测前缀。

交叉编译

如果您使用Cerbero交叉编译到iOS、Android、Cross-MinGW或UWP,则必须选择适当的配置文件并将其传递给所有步骤:引导、构建、打包等。

例如,如果你在Linux,你想为Android Universal构建,你必须运行:

# Bootstrap for Android Universal on Linux
$ ./cerbero-uninstalled -c config/cross-android-universal.cbc bootstrap

# Build everything and package for Android Universal
$ ./cerbero-uninstalled -c config/cross-android-universal.cbc package gstreamer-1.0

以下是每台目标机器的配置文件列表:

Linux目标
目标 配置文件
MinGW 32位 cross-win32.cbc
MinGW 64位 cross-win64.cbc
安卓通用 cross-android-universal.cbc
安卓ARM64 cross-android-arm64.cbc
安卓ARMv7 cross-android-armv7.cbc
安卓x86 cross-android-x86.cbc
安卓x86_64 cross-android-x86-64.cbc
macOS目标
目标 配置文件
macOS系统框架 osx-x86-64.cbc
iOS通用 cross-ios-universal.cbc
iOSARM64 cross-ios-arm64.cbc
iOSARMv7 cross-ios-armv7.cbc
iOSx86 cross-ios-x86.cbc
iOS cross-ios-x86-64.cbc
Windows目标

在Windows上,配置文件用于选择架构,变体用于选择工具链(MinGW、MSVC、UWP):

目标 配置文件 变体
MinGW x86 win32.cbc
MinGWx86_64 win64.cbc
MSVC x86 win32.cbc 视觉工作室
MSVCx86_64 win64.cbc 视觉工作室
UWP x86 win32.cbc uwp
UWPx86_64 win64.cbc uwp
UWP ARM64 cross-win-arm64.cbc uwp
UWP Universal cross-uwp-universal.cbc (隐式uwp)

示例用法:

# Target MinGW 32-bit
$ ./cerbero-uninstalled -c config/win32.cbc package gstreamer-1.0

# Target MSVC 64-bit
$ ./cerbero-uninstalled -c config/win64.cbc -v visualstudio package gstreamer-1.0

# Target UWP, x86_64
$ ./cerbero-uninstalled -c config/win64.cbc -v uwp package gstreamer-1.0

# Target UWP, Cross ARM64
$ ./cerbero-uninstalled -c config/cross-win-arm64.cbc -v uwp package gstreamer-1.0

# Target UWP, All Supported Arches
$ ./cerbero-uninstalled -c config/cross-uwp-universal.cbc package gstreamer-1.0

CI设置的提示

Cerbero可以将其引导和打包命令拆分为对CI设置有用的阶段。例如,您可能想要进行任何系统设置(例如安装包),并在构建CI映像时获取所有源以缓存它们:

$ ./cerbero-uninstalled fetch-bootstrap
$ ./cerbero-uninstalled fetch-package gstreamer-1.0
# This will use "sudo"
$ ./cerbero-uninstalled bootstrap --system=yes --toolchains=no --build-tools=no --offline

然后在您的CI作业中,您将不需要root来执行其余步骤:

$ ./cerbero-uninstalled bootstrap --system=no --toolchains=yes --build-tools=yes --offline
# When building a non-tagged commit, this will update the git repos for all gstreamer recipes
$ ./cerbero-uninstalled fetch-package gstreamer-1.0
$ ./cerbero-uninstalled package gstreamer-1.0 --offline

有关更多灵感,请参阅GStreamer的GitLab CI设置

使用变体启用可选功能

Cerbero通过variants控制可选和特定于平台的功能。你 可以通过运行以下命令查看可用变体的完整列表:

$ ./cerbero-uninstalled --list-variants

一些变体默认启用,而另一些则不启用。您可以通过执行以下操作之一来启用特定变体:

  • 使用-v参数调用cerbero-uninstalled,例如:

    $ ./cerbero-uninstalled -v variantname [-c ...] package gstreamer-1.0

  • 或者,编辑~/.cerbero/cerbero.cbc并添加variants = ['variantname']在 底部。如果文件不存在,请创建它。

多个变体可以用逗号分隔,也可以用多个-v 参数,例如以下是等效的:

$ ./cerbero-uninstalled -v variantname1,variantname2 [-c ...] package gstreamer-1.0
$ ./cerbero-uninstalled -v variantname1 -v variantname2 [-c ...] package gstreamer-1.0

要显式禁用变体,请改用novariantname

在同一变体多次启用/禁用的情况下,命令行上的最后一个条件将生效。例如,如果noVariantname是最后一个,则禁用Variantname。

启用Qt5支持

从版本1.15.2开始,Cerbero内置了对构建Qt5的支持 QML GStreamer插件。您可以通过 启用qt5变体

您还必须告诉Cerbero您的Qt5安装前缀在哪里。你可以做到的 通过设置QMAKE环境变量指向qmake,您 要使用,f. ex./path/to/Qt5.12.0/5.12.0/ios/bin/qmake

当构建Android通用与Qt<5.14,而不是QMAKE,你 必须 设置指向目录的QT5_PREFIX环境变量 在包含所有android目标的前缀f. ex中。 /path/to/Qt5.12.0/5.12.0

接下来,运行package

$ export QMAKE='/path/to/Qt5.12.0/5.12.0/<target>/bin/qmake'
$ ./cerbero-uninstalled -v qt5 [-c ...] package gstreamer-1.0

这将尝试构建Qt5 QML插件,如果找不到Qt5或无法构建插件,则会出错。插件将自动添加到输出的包中。

注意:输出的包将不包含Qt5库的副本。您必须在自己构建应用程序时链接到它们。

启用硬件编解码器支持

从版本1.15.2开始,Cerbero内置了对为英特尔和英伟达构建和打包硬件编解码器的支持。如果启用了适当的变体,插件要么会被构建,要么Cerbero会在不可能的情况下出错。

英特尔硬件编解码器

对于Intel,要启用的变体intelmsdk,它将构建msdk插件。

您必须设置INTELMEDIASDKROOTvar以指向您的英特尔媒体SDK前缀,或者您必须具有 SDK的pkgconfig前缀在PKG_CONFIG_PATH

在Windows上,INTELMEDIASDKROOT由安装程序自动设置。在Linux, 如果您需要设置此项,则必须将其设置为指向以下目录 包含mediasdkincludelib64目录。

对于VA-API,要启用的变体vaapi,它将构建gstream er-vaapi插件 如果可能,启用选项。

Nvidia硬件编解码器

自1.17.1以来,nvcodec插件不需要访问Nvidia Video SDK 或CUDA SDK。它现在在运行时加载所有内容。因此,它现在已启用 默认情况下在所有平台上。

启用Visual Studio支持

从版本1.15.2开始,Cerbero支持构建所有GStreamer配方, 所有强制依赖项(如glib、libffi、zlib等),以及一些外部的 与Visual Studio的依赖关系。您必须通过启用 的visualstudio变体

$ python ./cerbero-uninstalled -v visualstudio package gstreamer-1.0

如果您已经有Cerbero版本,强烈建议运行wipe 切换到使用Visual Studio构建之前的命令。

一些需要外部依赖的插件将被自动禁用,当 以这种模式运行。

目前,大多数使用Meson(btype = BuildType.MESON)的配方和那些 将can_msvc配方属性设置为True的 工作室。

在Windows上安装最低要求

重要提示: 在Windows上使用cerbero和GCC/MinGW工具链 需要64位操作系统。该工具链仅适用于64位 它可以生成32位或64位二进制文件。

这些步骤是在Windows上使用Cerbero所必需的。

安装Python 3.6或更新版本(32位或64位)

下载Windows可执行安装程序 并运行它。

  • 在安装程序的第一页上,选择以下内容:
  • 在第二页,默认值很好

  • 第三页,您必须选择以下选项:

  • 启用或安装. NET3.5.1框架

  • 在Windows 10上,从系统设置中的PATH变量中删除Windows应用商店路径条目。否则,Cerbero将尝试使用虚拟的Windows Store版本的Python

为Windows安装Git

下载Git for Windows安装程序并运行它。

  • 第一页是许可证

  • 下一页是Select Components,默认值很好,启用您喜欢的任何其他选项

  • Next Choosing the default editor used by Git,选择您喜欢的任何内容

  • Next Adjusting your PATH environment,您必须选择如屏幕截图所示

  • NextChoosing HTTPS transport backend,默认没问题

  • NextConfiguring the line ending conversions,您必须选择如屏幕截图所示

  • NextConfiguring the terminal emulator,默认没问题

  • NextConfiguring extra options,默认没问题

Git将安装在C:\Program Files\Git

安装MSYS/MinGW

下载mingw-get-setup可执行安装程序并运行它。

  • 第一页,保持所有选项不变

  • 第二页将下载最新的包装目录和基本包装

  • 完成后,MinGW安装管理器将打开,在基本设置下选择以下软件包:

然后,单击Installation菜单并选择Apply Changes。MSYS将 安装在C:\MinGW

重要提示: 安装后,您必须在桌面上创建一个快捷方式 C:\MinGW\msys\1.0\msys.bat,它将运行MinGW shell。你必须从里面运行Cerbero

注意 :Cerbero不使用MSYS附带的MinGW编译器工具链。 我们下载自己的定制GCC工具链 <a i=4>引导期间

注意 :MSYS与MSYS2不同 GStreamer项目不支持在MSYS2中运行Cerbero 环境。东西可能会工作,也可能会坏掉,你可以保留碎片。

安装Visual Studio 2015或更新版本

这是正确生成使用MinGW构建的食谱的导入库所必需的。支持社区构建和专业构建。

安装Visual Studio时必须安装最新的Windows 10 SDK,如下所示。您不需要任何较旧的Windows SDK。

如果要为UWP(又名通用Windows平台)构建,则必须使用VS 2017或更新版本,并且还必须选择通用Windows平台工作负载:

您可以在以下位置找到所有版本的Visual Studio:https://visualstudio.microsoft.com/vs/older-downloads/

安装其他工具
重要的Windows特定注意事项

您应该将cerbero git目录添加到防病毒软件中排除的文件夹列表中,否则当Autotools执行重命名和删除等文件操作时,您将获得随机构建失败。它还会将您的构建速度减慢约3-4倍。

Cerbero必须在明GW shell中运行,可从主菜单访问 或桌面。如果不是,请在桌面上创建一个快捷方式到C:\MinGW\msys\1.0\msys.bat

您的$HOME路径不能包含空格。如果您的Windows用户名 包含空格,您可以在/home中创建一个新目录并执行:

如果您使用的是Windows 10,也强烈建议在Windows设置中启用"开发人员模式",如下所示。

$ echo 'export HOME=/home/newdir' > ~/.profile

然后重新启动shell并键入cd以转到新的主目录。

请注意,在shell内部,/被映射到C:\Mingw\msys\1.0\

© 2021, Nirbheek Chauha

相关推荐
正义的彬彬侠2 分钟前
协方差矩阵及其计算方法
人工智能·机器学习·协方差·协方差矩阵
致Great8 分钟前
Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量
人工智能·大模型·rag
华奥系科技13 分钟前
智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁
人工智能·科技·安全·生活
ZPC821044 分钟前
OpenCV—颜色识别
人工智能·opencv·计算机视觉
Mr.简锋1 小时前
vs2022搭建opencv开发环境
人工智能·opencv·计算机视觉
weixin_443290691 小时前
【论文阅读】InstructPix2Pix: Learning to Follow Image Editing Instructions
论文阅读·人工智能·计算机视觉
ai产品老杨2 小时前
部署神经网络时计算图的优化方法
人工智能·深度学习·神经网络·安全·机器学习·开源
火山引擎边缘云2 小时前
创新实践:基于边缘智能+扣子的智能轮椅 AIoT 解决方案
人工智能·llm·边缘计算
fanxbl9572 小时前
深入探索离散 Hopfield 神经网络
人工智能·神经网络
TaoYuan__2 小时前
深度学习概览
人工智能·深度学习