环境准备:操作系统选择与基础依赖安装
好,咱们正式开始动手。这一章说白了就是「搭窝」——把工地的脚手架先立起来。我见过太多人一上来就急着配编码参数、调推流地址,结果编译个依赖报一堆错,回头发现是系统环境没弄干净。嗯,咱们别走那个弯路。
为什么选 Ubuntu 22.04 LTS?
你可能要问:CentOS 不行吗?Debian 不行吗?当然行。但我个人习惯用 Ubuntu 22.04 LTS 做推流管线的基础系统,原因有三:
- 软件源新:FFmpeg、x264、x265 这些核心库的官方 PPA 和社区包,对 22.04 支持最好。我在项目中遇到过 CentOS 7 上编译 x264 需要手动打补丁的情况,折腾了大半天。
- 内核版本适中:5.15 LTS 内核,对网卡驱动、io_uring 这些新特性的支持很稳。太新的内核有时反而会引入 regressions。
- 社区活跃:你遇到的大部分编译报错,在 Stack Overflow 上搜 Ubuntu 22.04 基本都有现成答案。
我的建议:如果你在虚拟机或云服务器上装,尽量选 Server 版,别带桌面。推流管线不需要 GUI,省下那几百兆内存给编码器不香吗?
基础依赖安装
系统装好之后,第一件事就是装编译工具链。别想着「我后面用到再装」——推流管线涉及的第三方库,十有八九需要从源码编译。先把家伙备齐。
打开终端,执行:
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
build-essential \
gcc \
g++ \
make \
cmake \
git \
vim \
pkg-config \
autoconf \
libtool \
yasm \
nasm
这里面有几个关键角色,我简单说一下:
| 工具 | 作用 | 我的备注 |
|---|---|---|
| gcc/g++ | C/C++ 编译器 | Ubuntu 22.04 默认是 gcc 11,够用 |
| make | 构建自动化工具 | 别用系统自带的旧版,apt 装的就是最新 |
| cmake | 跨平台构建系统 | FFmpeg 和一些现代库都用它 |
| git | 版本控制 | 拉取源码、切分支、打补丁全靠它 |
| yasm/nasm | 汇编器 | x264/x265 的汇编优化需要它们 |
注意:我曾经在一台新机器上忘了装
pkg-config,结果编译 FFmpeg 时死活找不到 libx264 的路径。折腾了两小时才发现是 pkg-config 没装。这玩意儿虽然小,但缺了它你寸步难行。
验证安装
装完之后,快速验证一下:
gcc --version
g++ --version
make --version
cmake --version
git --version
yasm --version
每一条都应该正常输出版本号。如果哪条报错,回头检查一下 apt 安装过程有没有报红。
网络与防火墙配置
推流管线说白了就是「收流 → 处理 → 发流」。网络不通,后面全是白搭。咱们先理清推流场景下常用的端口:
| 协议 | 默认端口 | 用途 |
|---|---|---|
| RTMP | 1935 | 推流/拉流(最常见) |
| SRT | 9710 | 低延迟推流(公网场景) |
| HLS | 80/443 | 拉流分发(HTTP) |
| WebRTC | UDP 10000-20000 | 实时互动 |
我个人习惯先关掉防火墙,等管线搭好再按需开放端口。但如果你在生产环境,千万别这么干。咱们现在是在学习环境,可以这样操作:
# 查看防火墙状态
sudo ufw status
# 如果开启,先允许 SSH(防止自己被锁在外面)
sudo ufw allow ssh
# 然后开放推流相关端口
sudo ufw allow 1935/tcp # RTMP
sudo ufw allow 9710/tcp # SRT
sudo ufw allow 80/tcp # HLS
sudo ufw allow 443/tcp # HTTPS HLS
# 最后启用防火墙
sudo ufw enable
一个小技巧:如果你在云服务器上操作,除了 ufw,还要去云控制台的安全组/防火墙规则里开放对应端口。我遇到过好几次「本地 ufw 配好了,但云平台安全组没放行」的坑,排查了半天才发现是云平台的问题。
本章知识体系
下面这张图把咱们这章的核心逻辑串起来了。你一看就明白:
避坑指南
- gcc 版本问题:我曾经在 Ubuntu 20.04 上编译新版 FFmpeg,默认 gcc 9 对某些内联汇编支持不够好,得手动升到 gcc 10。22.04 的 gcc 11 目前没遇到这个问题。
- 防火墙别乱关:如果你在公网服务器上操作,关掉防火墙等于裸奔。至少保证 SSH 端口是放行的。
- apt 源慢怎么办:换国内镜像源,比如清华、阿里、中科大。具体方法网上搜「Ubuntu 22.04 换源」,一分钟搞定。