如何使用nginx临时搭建rtmp服务器?
由于需要研究rtmp协议交互方式及报数据格式,使用nginx临时搭建一个rtmp服务器,主要通过nginx的rtmp扩展模块实现接收RTMP推送的音视频流,同时提供RTMP拉流服务的能力。
要使用NGINX搭建一个临时的RTMP流媒体服务器,你需要按照以下步骤进行操作:
- 安装NGINX在 Ubuntu 系统上,可以通过以下命令安装 Nginx。
sudo apt-get update
sudo apt-get install nginx
- 配置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
- 创建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”的应用程序,该应用程序具有实时传输和录制功能。
- 使用NGINX启动RTMP服务器使用以下命令启动 Nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx_rtmp.conf
- 推送直播流现在已经可以使用支持 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 服务器的地址和推送到的主题名。
- 查看直播流现在可以使用支持 RTMP 的播放器,如 VLC 或 flv.js,在主题名为 “stream” 的 RTMP 流上观看视频。
例如,使用 VLC 播放器打开以下链接:
rtmp://localhost/live/stream
这将在 VLC 播放器中播放视频流。
- 停止NGINX RTMP服务器使用以下命令停止 Nginx:
/usr/local/nginx/sbin/nginx -s stop
这将停止 Nginx 服务器并关闭 RTMP 模块。
- 配置实时录制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
定义了输出文件扩展名。
- 配置实时转码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流媒体服务器,用于不同的应用场景。
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容