GStreamer安装——Mac OS X

在Mac OS X上安装

支持平台

  • 10.6 (Snow Leopard)
  • 10.7 (Lion)
  • 10.8 (Mountain Lion)
  • 10.9 (Mavericks)
  • 10.10 (Yosemite)
  • 10.11 (El Capitan)

先决条件

要使用GStreamer SDK for OS X开发应用程序,您需要 OS X雪豹(10.6)或更高版本以及 XCode3.2.6或 后来。

推荐的系统是macOS Sierra,带有 XCode 8

下载并安装SDK

SDK中有3组文件:

  • 运行GStreamer应用程序需要运行时文件。您可能希望将这些文件与您的应用程序(或下面的安装程序)一起分发。
  • 开发文件是创建GStreamer应用程序所需的附加文件。
  • 您可以使用的Mac OS X软件包 与PackageMaker 使用您的应用程序部署GStreamer

获取运行时和开发安装程序 从 在GStreamer下载页面请同时安装它们

  • 运行时安装程序是例如gstreamer-1.0-{VERSION}-x86_64.pkg,以及
  • 开发安装程序是例如gstreamer-1.0-devel-{VERSION}-x86_64.pkg

在苹果OS X 10.6(雪豹)上,你必须手动安装Python 2.7。它已经包含在OS X的更高版本中。你可以从这里得到它。

下载是 安装程序包(. pkg)

双击软件包文件,并按照安装向导提供的说明进行操作。如果系统抱怨软件包没有签名,您可以控制-单击它并打开以开始安装。当您这样做时,它会警告您,但无论如何都有一个安装选项。否则,您可以转到系统偏好设置→安全和隐私→常规并选择允许从"任何地方"安装软件包的选项。

这些是您可能会发现有用的GStreamer框架的一些路径:

  • /Library/Frameworks/GStreamer.framework/:框架的根路径
  • /Library/Frameworks/GStreamer.framework/Versions:包含框架所有版本的路径
  • /Library/Frameworks/GStreamer.framework/Versions/Current:链接到框架的当前版本
  • /Library/Frameworks/GStreamer.framework/Headers:带有开发头的路径
  • /Library/Frameworks/GStreamer.framework/Commands:链接到框架提供的命令,如gst-😍y-1.0或gst-Launing-1.0

有关OS X框架解剖的更多信息,您可以查阅 以下链接

配置您的开发环境

构建教程

教程代码,以及项目文件和解决方案文件 他们都在 GST-docsexamples/tutorials子目录。

要开始构建教程,请在Documents中创建一个新文件夹 目录并复制 文件夹/Library/Frameworks/GStreamer.framework/Current/share/gst-sdk/tutorials

您可以启动XCode并加载项目文件。

按运行按钮构建并运行第一个教程。您可以切换教程以选择可用方案之一进行构建。

创建新项目

XCode

GStreamer二进制文件提供了一个 框架 您可以拖放到XCode开始使用它。有一个小 常规使用框架的例外,您需要手动 包括标题(/Library/Frameworks/GStreamer.framework/Headers)和 库(/Library/Frameworks/GStreamer.framework/Libraries)搜索路径。在 XCode您需要执行以下操作:

  • GStreamer.framework添加到常规→框架和库
  • 将库路径添加到构建设置→库搜索路径
  • 将标头路径添加到构建设置→系统标头搜索路径
  • 禁用强化运行时生成设置→启用强化运行时 。这 是必需的,因为GStreamer.framework没有签名。
手工编译

如果您直接使用GCC(或CLANG)而不是XCode,您可以遵循类似的方法,为编译器和链接器提供标头和库搜索路径。这是一个非常简单的示例来向您展示如何:

假设我们有一个需要GStreamer的文件main.c,如下所示:

#include <gst/gst.h>

int
main(int argc, char *argv[])
{
  gst_init(NULL, NULL);

  return 0;
}

我们可以编译它并将其与以下命令链接:

# Compile
$ clang -c main.c -o main.o -I/Library/Frameworks/GStreamer.framework/Headers

# Link
$ clang -o main main.o -L/Library/Frameworks/GStreamer.framework/Libraries -F/Library/Frameworks -framework GStreamer

注意我们如何使用-I/Library/Frameworks/GStreamer.framework/Headers来指定 标头搜索路径(与XCode相同),在链接步骤中我们指定 -L/Library/Frameworks/GStreamer.framework/Libraries来表示库 搜索路径(就像我们在XCode中做的那样),-F/Library/Frameworks告诉 链接器在哪里可以找到框架,最后是-framework GStreamer来指定 GStreamer框架。

最后,我们甚至可以检查生成的可执行文件并验证它是否指向我们的GStreamer框架:

$ otool -L main
main:
        @rpath/GStreamer.framework/Versions/1.0/lib/GStreamer (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)
手动编译(使用pkg-config)

GStreamerGStreamer.framework还附带了一些开发工具,例如 pkg-config.pkg-config是一个用来查询什么编译器和链接器的工具 标记应用程序是否需要使用某个库。所以我们会 现在用pkg-config构建相同的示例,并要求 必需的GStreamer标志。

# Tell pkg-config where to find the .pc files
$ export PKG_CONFIG_PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/pkgconfig

# We will use the pkg-config provided by the GStreamer.framework
$ export PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/bin:$PATH

# Compile
$ clang -c main.c -o main.o `pkg-config --cflags gstreamer-1.0`

# Link
$ clang -o main main.o `pkg-config --libs gstreamer-1.0`

使用GStreamer. Framework提供pkg-config非常GStreamer.framework (不是Homebrew提供的那个),这就是为什么我们设置PATH来查找 pkg-config从正确的位置。

请注意,我们如何使用pkg-config --cflags gstreamer-1.0来获取所有 编译标志,然后pkg-config --libs gstreamer-1.0获取所有 链接器标志。

上面的命令应该生成了一个可执行文件,和以前一样,我们可以检查:

$ otool -L main
main:
        @rpath/libgstreamer-1.0.0.dylib (compatibility version 2101.0.0, current version 2101.0.0)
        @rpath/libgobject-2.0.0.dylib (compatibility version 6201.0.0, current version 6201.6.0)
        @rpath/libglib-2.0.0.dylib (compatibility version 6201.0.0, current version 6201.6.0)
        @rpath/libintl.8.dylib (compatibility version 10.0.0, current version 10.5.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

您可以看到依赖关系与我们上面看到的有什么不同。原因是在这种情况下,我们直接链接到框架中包含的GStreamer库,而不是框架本身(这里有一点不同)。

相关推荐
昨日之日200624 分钟前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_26 分钟前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover27 分钟前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川1 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
励志成为嵌入式工程师2 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer3 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
wheeldown3 小时前
【数据结构】选择排序
数据结构·算法·排序算法
阡之尘埃3 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
观音山保我别报错4 小时前
C语言扫雷小游戏
c语言·开发语言·算法