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库,而不是框架本身(这里有一点不同)。

相关推荐
凯禾瑞华养老实训室21 小时前
产教融合新抓手:智慧健康养老服务与管理实训室报价及人才培育路径
大数据·人工智能·物联网·ar·vr·智慧健康养老服务与管理
ccLianLian21 小时前
计算机视觉·LaVG
人工智能·计算机视觉
Nick_zcy21 小时前
基于Vue和Python的羽毛球拍智能推荐系统, 从“不会选羽毛球拍”到“选对拍”的一站式小工具
前端·vue.js·python·算法·推荐算法
世岩清上21 小时前
脑机接口:从实验室到生活场景的科技革命——2025全球科技展深度观察
人工智能·科技·生活
美团技术团队21 小时前
大模型剪枝新范式:先浓缩,再剪枝——DenoiseRotator技术解读
人工智能
charlie11451419121 小时前
AVX 指令集系列深度介绍:领域、意义、以及 AVX AVX2 的基本用法与样例
开发语言·c++·人工智能·软件工程·并行计算·avx
AI浩21 小时前
【Block总结】门控注意力机制,最新注意力机制|即插即用|最佳论文奖
人工智能·语言模型·自然语言处理
老蒋新思维21 小时前
创客匠人推演:当知识IP成为“数字心智”的架构师——论下一代认知服务的形态
网络·人工智能·网络协议·tcp/ip·机器学习·创始人ip·创客匠人
风筝在晴天搁浅21 小时前
hot100 438.找到字符串中所有字母异位词
算法
AI营销干货站21 小时前
原圈科技AI市场舆情分析平台多维度能力评估及市场表现解析
大数据·人工智能