🎥 搭建 RTMP 视频流模拟服务:用 mp4 文件实现直播推流(完整教程)

🎥 搭建 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 脚本,可留言获取!🚀