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 装一下。装完之后运行上面的命令,等它跑完就行。
/usr/local/bin/ 下。如果你用的是 Apple Silicon 芯片(M1/M2),路径可能是 /opt/homebrew/bin/。记得把这个路径加到 PATH 环境变量里。
Windows 下安装 GStreamer
Windows 稍微麻烦一点。GStreamer 官方提供了 MSI 安装包,我建议你下载 MinGW 版本,而不是 MSVC 版本。为什么?因为 MinGW 版本的工具链更接近 Linux 环境,后面我们写代码时兼容性更好。
安装步骤:
- 打开浏览器,访问 gstreamer.freedesktop.org/download/
- 找到 Windows 那一栏,下载
gstreamer-1.0-msvc-x86_64-xxx.msi(或者 MinGW 版本) - 双击安装,一路 Next
- 安装完成后,把
C:\gstreamer\1.0\msvc_x86_64\bin添加到系统环境变量PATH中
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
你应该能听到一声「嘟」的测试音。如果没声音,检查一下系统音量或者音频输出设备。
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
这个命令做了四件事:
audiotestsrc:生成测试音频信号audioconvert:转换音频格式(确保后续插件能处理)wavenc:编码成 WAV 格式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.0和gst-launch-1.0这两个核心工具
环境搭好了,下一章我们就可以开始写第一个 GStreamer 程序了。说实话,我第一次用 gst-launch-1.0 跑通音频 pipeline 时,还挺有成就感的。希望你也能体会到这种「一行命令搞定一切」的快感。