Linux香港VPS搭建流媒体:FFmpeg+Nginx RTMP实战
在多媒体应用需求激增的当下,利用Linux香港VPS搭建专属流媒体服务器,既能控制成本又能保障稳定性,成为个人开发者和小型团队的优选方案。本文将手把手教你通过FFmpeg与Nginx RTMP模块完成配置,从环境准备到推流测试全程覆盖。
一、基础环境准备
首先需要一台Linux香港VPS(本次以Ubuntu 20.04为例)。为确保后续编译安装顺利,需提前安装必要依赖:编译工具链用于源码编译,PCRE库处理正则表达式,SSL库支持加密传输,zlib库负责数据压缩。执行以下命令完成安装:
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev -y
二、Nginx RTMP模块安装
Nginx RTMP(Real-Time Messaging Protocol,实时消息传输协议)模块是实现流媒体转发的核心。安装步骤如下:
1. 下载源码
从Nginx官网下载稳定版源码(本次用1.21.6),并克隆RTMP模块仓库:
wget http://nginx.org/download/nginx-1.21.6.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
2. 解压与编译配置
解压Nginx源码并进入目录,配置时添加RTMP模块和SSL支持:
tar -zxvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
3. 编译安装
执行编译并安装到默认路径:
make
sudo make install
*提示:若编译报错,检查依赖是否安装完整;安装完成后可通过`sudo /usr/local/nginx/sbin/nginx -v`验证版本。*
三、Nginx核心配置
编辑Nginx主配置文件(路径:/usr/local/nginx/conf/nginx.conf),添加RTMP服务和HTTP辅助功能:
1. RTMP服务配置
在文件末尾添加以下内容,定义RTMP服务器监听1935端口(行业默认),并创建名为“live”的应用:
rtmp {
server {
listen 1935;
chunk_size 4000; # 数据分块大小,影响传输效率
application live {
live on; # 开启直播模式
record off; # 暂不启用录制
}
}
}
2. HTTP服务扩展
为方便监控流状态,在`http`块内添加统计和控制接口:
server {
listen 80;
server_name 你的VPS公网IP或域名;
location / {
root /usr/local/nginx/html; # 静态文件目录
index index.html;
}
location /stat {
rtmp_stat all; # 显示流统计信息
rtmp_stat_stylesheet stat.xsl; # 样式表路径
}
location /stat.xsl {
root /路径/到/nginx-rtmp-module; # 替换为实际模块路径
}
}
配置完成后,通过`sudo /usr/local/nginx/sbin/nginx -s reload`重启服务生效。
四、FFmpeg安装与推流测试
FFmpeg是多媒体处理工具,用于将本地视频推送到Nginx RTMP服务器。Ubuntu环境下直接通过APT安装:
sudo apt install ffmpeg -y
1. 推流操作
假设本地有测试视频文件“test.mp4”,执行以下命令推流到“live”应用下的“stream1”流:
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://你的VPS公网IP/live/stream1
参数说明:`-re`模拟实时流速度,`-c copy`直接复制音视频编码(减少计算压力),`-f flv`指定输出格式为FLV。
2. 播放验证
使用VLC播放器(或OBS等工具),输入推流地址`rtmp://你的VPS公网IP/live/stream1`即可观看。若无法播放,检查:
- VPS防火墙是否放行1935(RTMP)和80(HTTP)端口
- FFmpeg是否正确识别视频文件路径
- Nginx服务是否正常运行(`ps aux | grep nginx`查看进程)
通过Linux香港VPS搭建的流媒体服务器,既能满足个人直播、企业内部培训等场景需求,又能通过调整Nginx配置(如开启录制、限制推流数量)扩展功能。低成本、高灵活性的特性,让它成为中小规模流媒体应用的理想选择。