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

相关推荐
OpenVINO 中文社区6 分钟前
实战精选|如何使用 OpenVINO™ 在 ElectronJS 中创建桌面应用程序
人工智能·openvino
只怕自己不够好11 分钟前
《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》
人工智能·opencv·计算机视觉
网络研究院17 分钟前
国土安全部发布关键基础设施安全人工智能框架
人工智能·安全·框架·关键基础设施
jiao_mrswang21 分钟前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca30 分钟前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱30 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子35 分钟前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab
是阿建吖!36 分钟前
【优选算法】二分查找
c++·算法
王燕龙(大卫)40 分钟前
leetcode 数组中第k个最大元素
算法·leetcode
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习