2. 环境搭建:在Ubuntu上安装GStreamer开发库、工具集和常用插件
说实话,搞多媒体开发,环境搭不好后面全是坑。我见过太多人花一整天装库,结果跑个 gst-launch-1.0 都报错。这一章咱们就把 Ubuntu 上的 GStreamer 环境一次搞定。
我的习惯是:先搞清楚要装什么,再动手。别上来就 apt install 一通乱装,装完了发现缺这个缺那个,更头疼。
2.1 到底要装哪些东西?
GStreamer 的生态其实挺清晰的。我把它分成三块:
| 分类 | 包名(示例) | 干什么用 |
|---|---|---|
| 核心库 | libgstreamer1.0-0 |
框架本身,没有它啥都跑不了 |
| 开发头文件 | libgstreamer1.0-dev |
写 C 代码必须,编译链接全靠它 |
| 工具集 | gstreamer1.0-tools |
gst-launch-1.0、gst-inspect-1.0 这些命令行工具 |
| 常用插件 | gstreamer1.0-plugins-{base,good,bad,ugly} |
各种编解码器、源、滤镜、封装器 |
-dev 和所有插件集。别省那点硬盘空间,后面缺插件的时候你会后悔的。我曾经在客户现场因为少装了一个 bad 插件,调试了整整一个下午。
2.2 开始安装:一行命令搞定
Ubuntu 20.04/22.04/24.04 都适用。打开终端,执行:
sudo apt update
sudo apt install -y \
libgstreamer1.0-0 \
libgstreamer1.0-dev \
gstreamer1.0-tools \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev
这里我额外加了 gstreamer1.0-libav,它封装了 FFmpeg 的编解码器。你想想看,很多视频格式的解码都靠它,不装的话后面会各种报 No such element。
bad 和 ugly 插件集在某些地区或企业镜像里可能被屏蔽。如果遇到 404,可以换官方源或者用 universe 仓库。我曾经在某个内网环境里折腾了半天,最后发现是镜像源把 ugly 给过滤掉了。
2.3 验证安装:三行命令见真章
装完了别急着高兴。咱们得验证一下。我一般用三个步骤:
- 检查版本 —— 确认核心库装上了
- 检查插件 —— 看看常用插件是否可用
- 跑一个管线 —— 真刀真枪验证
2.3.1 检查版本
gst-launch-1.0 --version
正常输出类似:
gst-launch-1.0 version 1.20.3
GStreamer 1.20.3
如果报 command not found,那就是 gstreamer1.0-tools 没装上。回去检查一下。
2.3.2 检查插件
gst-inspect-1.0 | grep -i "video"
这条命令会列出所有名字里带 video 的插件。你应该能看到 videotestsrc、videoconvert、vp8dec 这些。如果输出很少,说明插件集没装全。
gst-inspect-1.0 videotestsrc 可以查看某个插件的详细参数。我调试管线时经常这么干,比翻文档快多了。
2.3.3 跑一个管线
这是我最喜欢的一步。跑通了,心里就踏实了。
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
如果一切正常,会弹出一个窗口,显示一个彩条测试图案。按 Ctrl+C 退出。
为什么会用 autovideosink?它会自动选择当前系统可用的视频输出方式(X11、Wayland 或 GTK)。省心。
2.4 知识体系:一张图看懂
下面这张图把 GStreamer 的安装结构和验证流程串起来了。我画图的时候习惯把「核心库」放在中间,因为它是整个框架的心脏。
2.5 避坑指南:我踩过的几个坑
- 缺插件报错:
WARNING: erroneous pipeline: no element "xxx"。别慌,用apt search gstreamer找对应的包装上就行。 - 版本冲突:Ubuntu 默认源里的 GStreamer 版本可能比较老。如果你需要新版,可以加
ppa:gstreamer-developers/ppa。但我建议初学者先用系统源,稳定。 - 32位 vs 64位:现在基本都是 64 位系统,但如果你在嵌入式环境里交叉编译,记得装对应架构的包。
- Wayland 显示问题:如果你用 Wayland,
autovideosink可能弹不出窗口。可以试试waylandsink或者切回 X11。
一句话总结: 装好核心库、开发头文件、工具集、所有插件集,然后用 gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink 验证。看到彩条窗口,环境就稳了。