🎥 搭建 RTMP 视频流模拟服务:用 mp4 文件实现直播推流(完整教程)
在开发直播平台或测试流媒体播放功能时,我们常常需要一个稳定的 RTMP 推流源。本教程将教你如何使用一台服务器,将本地 mp4 视频文件通过 FFmpeg 推送为 RTMP 流,实现视频流的模拟直播效果。
📌 准备工作
✅ 服务器要求
- 一台 Linux 服务器(推荐 Ubuntu 20.04 或 CentOS 7)
- 至少 1 核 CPU / 1GB 内存
- 已开放端口(1935 默认 RTMP 端口)
✅ 安装依赖
- FFmpeg(推流工具)
- Nginx + nginx-rtmp-module(搭建 RTMP 服务)
🧰 第一步:安装 Nginx + nginx-rtmp-module
方式一:一键脚本安装(推荐)
# 安装 Nginx 和 RTMP 模块(适用于 Ubuntu)
sudo apt update && sudo apt install -y build-essential libpcre3 libpcre3-dev libssl-dev ffmpeg wget unzip
wget https://nginx.org/download/nginx-1.24.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/refs/heads/master.zip
tar zxvf nginx-1.24.0.tar.gz
unzip master.zip
cd nginx-1.24.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make && sudo make install
方式二:使用 Docker 安装(快速方便)
docker run -d --name nginx-rtmp \
-p 1935:1935 -p 8080:80 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
alfg/nginx-rtmp
🛠️ 第二步:配置 nginx.conf 启用 RTMP 服务
编辑 /usr/local/nginx/conf/nginx.conf
或你的 nginx 配置路径:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
http {
server {
listen 8080;
location / {
root html;
index index.html;
}
}
}
保存后重启 nginx:
sudo /usr/local/nginx/sbin/nginx -s reload
🎬 第三步:用 FFmpeg 将 mp4 推流到 RTMP
确保你有一个 mp4 文件,比如 video.mp4
执行以下命令将视频循环推送至 RTMP:
ffmpeg -re -stream_loop -1 -i video.mp4 -c copy -f flv rtmp://localhost/live/stream
🔹 含义说明:
-re
:以实时速度读入文件-stream_loop -1
:无限循环播放-f flv
:推流格式使用 flv(RTMP 必需)
此时你已成功将本地 mp4 文件推送为 RTMP 流。
📺 第四步:通过播放器拉流观看
你可以使用以下任一播放器播放流地址:
rtmp://your_server_ip/live/stream
推荐播放器:
- VLC 播放器
- ffplay
- OBS / 播放测试页 / h5live player
ffplay rtmp://your_server_ip/live/stream
🧩 补充技巧
🔄 自动启动脚本(systemd)
创建 /etc/systemd/system/rtmp-loop.service
:
[Unit]
Description=Loop MP4 RTMP Stream
After=network.target
[Service]
ExecStart=/usr/bin/ffmpeg -re -stream_loop -1 -i /root/video.mp4 -c copy -f flv rtmp://localhost/live/stream
Restart=always
[Install]
WantedBy=multi-user.target
启动服务:
sudo systemctl daemon-reexec
sudo systemctl enable --now rtmp-loop
🔐 防火墙放行端口
ufw allow 1935/tcp
ufw allow 8080/tcp
✅ 总结
通过本教程,你已经实现了:
- ✅ 构建 RTMP 服务端
- ✅ 使用 FFmpeg 将 mp4 文件转成直播流
- ✅ 播放和测试视频流
🎉 这个方案适合用于:
- 模拟直播测试
- 自动播放宣传片、教程、广告
- 搭建本地媒体服务器
如需支持多流、多路推送、HLS 支持等,可继续拓展 nginx-rtmp 配置。
📌 如果你需要完整 nginx.conf 示例或 Docker Compose 脚本,可留言获取!🚀