如何使用nginx临时搭建rtmp服务器?

作者站长头像
站长
· 阅读数 3

由于需要研究rtmp协议交互方式及报数据格式,使用nginx临时搭建一个rtmp服务器,主要通过nginx的rtmp扩展模块实现接收RTMP推送的音视频流,同时提供RTMP拉流服务的能力。

回复
1个回答
avatar
test
2024-07-05

要使用NGINX搭建一个临时的RTMP流媒体服务器,你需要按照以下步骤进行操作:

  1. 安装NGINX在 Ubuntu 系统上,可以通过以下命令安装 Nginx。
sudo apt-get update
sudo apt-get install nginx
  1. 配置NGINX实现RTMP模块安装完成后,需要手动编译Nginx以及添加RTMP模块支持。在这里建议使用一个预编译好 RTMP 模块的版本,可以访问该链接下载: https://github.com/arut/nginx-rtmp-module

下载 nginx 以及 RTMP 模块:

cd /usr/src
wget http://nginx.org/download/nginx-1.19.2.tar.gz
tar -xzf nginx-1.19.2.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip

进入 nginx 目录,使用下面的命令编译安装此版本的 Nginx。

cd /usr/src/nginx-1.19.2
./configure --with-http_ssl_module --add-module=/usr/src/nginx-rtmp-module-master
make && make install
  1. 创建NGINX的RTMP配置文件在创建配置文件前,为了方便,应备份当前的 NGINX 配置文件(/usr/local/nginx/conf/nginx.conf)。

创建一个新的配置文件 /usr/local/nginx/conf/nginx_rtmp.conf,将以下内容复制到其中:

worker_processes  auto;
 
events {
    worker_connections  1024;
}
 
rtmp {
    server {
        listen 1935;
        chunk_size 4096;
 
        application live {
            live on;
            record off;
        }
    }
}

这将使用 RTMP 模块在 1935 端口上监听所有来自客户端的连接,开始一个名为 “live”的应用程序,该应用程序具有实时传输和录制功能。

  1. 使用NGINX启动RTMP服务器使用以下命令启动 Nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx_rtmp.conf
  1. 推送直播流现在已经可以使用支持 RTMP 的流媒体软件,如 OBS 或 ffmpeg,将视频流推送到 RTMP 服务器。

例如,使用 ffmpeg 将桌面中的视频推送到 RTMP 服务器。可以使用以下命令:

ffmpeg -f x11grab -r 30 -s 800x600 -i :0.0 -vcodec libx264 -preset ultrafast -tune zerolatency -b 900k -maxrate 900k -bufsize 900k -acodec libvo_aacenc -ab 128k -f flv rtmp://localhost/live/stream

以上是一个常用的命令,其中 :0.0 表示桌面的端口地址,-s 参数是输出视频的分辨率,-b 是视频的码率,-ab 是音频的比特率,rtmp://localhost/live/stream 是 RTMP 服务器的地址和推送到的主题名。

  1. 查看直播流现在可以使用支持 RTMP 的播放器,如 VLC 或 flv.js,在主题名为 “stream” 的 RTMP 流上观看视频。

例如,使用 VLC 播放器打开以下链接:

rtmp://localhost/live/stream

这将在 VLC 播放器中播放视频流。

  1. 停止NGINX RTMP服务器使用以下命令停止 Nginx:
/usr/local/nginx/sbin/nginx -s stop

这将停止 Nginx 服务器并关闭 RTMP 模块。

  1. 配置实时录制RTMP 模块还支持实时流的录制。在Nginx的RTMP配置文件中,可以使用以下配置语句启用该功能:
application live {
    live on;
    record [path];
    record_path /var/videos;
    record_suffix .flv;
}

其中,[path] 是要在记录中使用的路径和文件名。例如:record /recordings/live-$time.flv,这将使用当前时间戳作为文件名,将输出文件保存到指定目录下。

record_path 声明了输出目录的位置,record_suffix 定义了输出文件扩展名。

  1. 配置实时转码Nginx RTMP模块还支持实时视频转码。在配置文件中,可以使用以下语句启用此功能:
application live {
    live on;
    exec ffmpeg -i rtmp://localhost/$app/$name -c:v libx264 -preset veryfast -c:a libfdk_aac -f flv rtmp://localhost/hls/$name_hi;
}

以上语句定义了一个名为 “name” 的应用程序,该应用程序具有实时转码功能。转码由 ffmpeg 命令执行。在此示例中,视频被重新编码为 H.264,并使用 AAC 音频编码器。rtmp://localhost/hls/$name_hi 将转码后的视频发送到名为 “name_hi” 的应用程序。

总结:以上就是使用Nginx搭建RTMP流媒体服务器的基本步骤。通过这些操作,可以快速建立一个临时的RTMP流媒体服务器,用于不同的应用场景。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容