2、开发环境搭建:Linux下GStreamer安装、macOS下GStreamer安装、Windows下GStreamer安装、验证安装、常用工具介绍

好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多初学者在安装这一步就卡住了,其实没必要。GStreamer 的安装方式很成熟,各个平台都有对应的包管理器。我个人的习惯是:能用系统包管理器就别自己编译,除非你要定制某些插件。

下面我按三个主流操作系统分别来讲。你根据自己手头的机器选一个看就行。

Linux 下安装 GStreamer

Linux 是最省心的平台。无论你用 Ubuntu、Debian 还是 CentOS,基本都是一条命令搞定。

Ubuntu / Debian 系

sudo apt update
sudo apt install libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

这里我解释一下为什么装这么多插件包:

  • base:核心基础插件,必装
  • good:质量好、许可证友好的插件,比如常见的音频格式
  • bad:名字叫 bad,其实不是不能用,只是有些专利或兼容性问题。我在项目中遇到过需要解码某些特殊音频格式的情况,就是靠 bad 插件搞定的
  • ugly:许可证比较严格的插件,比如 MP3 编码器
  • libav:基于 FFmpeg 的封装,能处理几乎所有音视频格式

CentOS / RHEL / Fedora

sudo yum install gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-plugins-ugly-free

嗯,这里要注意:CentOS 的包名和 Ubuntu 不太一样,多了个 free 后缀。如果你用的是 Fedora,直接用 dnf 代替 yum 就行。

macOS 下安装 GStreamer

macOS 用户,我建议你直接用 Homebrew。为什么?因为我自己试过从源码编译,折腾了一下午才搞定依赖关系,而 Homebrew 三分钟就装好了。

brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

如果你还没装 Homebrew,先去 brew.sh 装一下。装完之后运行上面的命令,等它跑完就行。

小提示:macOS 上安装完成后,GStreamer 的工具默认在 /usr/local/bin/ 下。如果你用的是 Apple Silicon 芯片(M1/M2),路径可能是 /opt/homebrew/bin/。记得把这个路径加到 PATH 环境变量里。

Windows 下安装 GStreamer

Windows 稍微麻烦一点。GStreamer 官方提供了 MSI 安装包,我建议你下载 MinGW 版本,而不是 MSVC 版本。为什么?因为 MinGW 版本的工具链更接近 Linux 环境,后面我们写代码时兼容性更好。

安装步骤:

  1. 打开浏览器,访问 gstreamer.freedesktop.org/download/
  2. 找到 Windows 那一栏,下载 gstreamer-1.0-msvc-x86_64-xxx.msi(或者 MinGW 版本)
  3. 双击安装,一路 Next
  4. 安装完成后,把 C:\gstreamer\1.0\msvc_x86_64\bin 添加到系统环境变量 PATH
注意:我曾经遇到过 Windows 上安装后命令行找不到 gst-launch-1.0 的情况。原因就是没加环境变量。添加完记得重启终端,或者重新打开一个 CMD 窗口。

验证安装

装完了?别急着走。咱们先验证一下环境是否正常。打开终端,输入:

gst-launch-1.0 --version

如果看到类似这样的输出,说明安装成功了:

gst-launch-1.0 version 1.22.0
GStreamer 1.22.0
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0

再跑一个简单的测试,看看能不能播放音频:

gst-launch-1.0 audiotestsrc ! audioconvert ! autoaudiosink

你应该能听到一声「嘟」的测试音。如果没声音,检查一下系统音量或者音频输出设备。

避坑指南:如果你在 Linux 上听不到声音,可能是 autoaudiosink 没选对后端。可以试试 pulsesink 或者 alsasink。我曾经在树莓派上遇到过这个问题,换成 alsasink 就好了。

常用工具介绍

GStreamer 自带几个非常实用的命令行工具。我平时用得最多的就是下面这两个。

gst-inspect-1.0

这个工具用来查看系统中安装了哪些插件、每个插件有哪些参数。说白了,它就是 GStreamer 的「说明书」。

查看所有已安装的插件:

gst-inspect-1.0

查看某个具体插件的详细信息:

gst-inspect-1.0 audiotestsrc

输出会告诉你这个插件有多少个 pad(输入/输出端口)、支持哪些属性、默认值是什么。我在调试音频 pipeline 时,经常用这个命令来确认某个插件的参数名是否正确。

gst-launch-1.0

这个工具是 GStreamer 的「瑞士军刀」。你可以用一行命令构建一个完整的音频处理流水线。

基本语法:

gst-launch-1.0 [源插件] ! [处理插件] ! [输出插件]

举个例子,录制一段音频并保存为文件:

gst-launch-1.0 audiotestsrc ! audioconvert ! wavenc ! filesink location=test.wav

这个命令做了四件事:

  1. audiotestsrc:生成测试音频信号
  2. audioconvert:转换音频格式(确保后续插件能处理)
  3. wavenc:编码成 WAV 格式
  4. filesink:写入文件

你想想看,如果不用 GStreamer,要实现同样的功能,你得写多少代码?

常用插件速查表

为了方便你后续学习,我整理了一个常用插件表:

插件名称 功能 所属分类
audiotestsrc 生成测试音频(正弦波、白噪声等) base
audioconvert 音频格式转换(采样率、位深等) base
audioresample 音频重采样 base
wavenc WAV 编码器 good
wavparse WAV 解析器 good
filesrc 从文件读取数据 base
filesink 将数据写入文件 base
autoaudiosink 自动选择音频输出设备 base
webrtcdsp WebRTC 音频处理(含回声消除) bad

这张表你最好保存下来。后面我们做回声消除时,webrtcdsp 这个插件会频繁出现。

小结

这一章我们完成了三件事:

  • 在 Linux、macOS、Windows 上分别安装了 GStreamer
  • gst-launch-1.0 验证了安装是否成功
  • 认识了 gst-inspect-1.0gst-launch-1.0 这两个核心工具

环境搭好了,下一章我们就可以开始写第一个 GStreamer 程序了。说实话,我第一次用 gst-launch-1.0 跑通音频 pipeline 时,还挺有成就感的。希望你也能体会到这种「一行命令搞定一切」的快感。