最近发现有公网ip于是想研究下nginx服务器搭建。默认的nginx都是不带rtmp协议的,这里安装带有rtmp协议的版本。如果想动手操作使用homebrew安装,但是docker安装方便。
使用homebrew使用nginx-rtmp
第一步:安装xcode(直接在商店里安装即可)
安装后在终端输入git,会提示安装额外的命令行工具,按提示安装即可,然后设置git路径。(后面安装brew时候设置也可以)
git config --global --add safe.directory /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
第二步:安装homebrew
直接使用官网的话速度慢经常失败,这里使用网上大佬的,中科院的源我这里比较快。
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
注意:如果安装的时候又git的报错,然后就按照第一步中的来,或者终端运行git会有提示信息。
第三步:安装带有rtmp的nginx
brew tap denji/nginx
brew install nginx-full --with-rtmp-module
如果安装过程有问题,可以使用update后再次尝试
brew update
第四步:配置rtmp
默认的nginx配置文件中是没有配置rtmp服务的,需要手动添加。配置文件的路径intel版本和m系列的不一样(之前百度查的路径都不对),最好使用如下命令查一下看看,找到conf结尾的路径。
brew info nginx
## 我的信息如下
> brew info nginx
==> nginx: stable 1.23.2 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/nginx.rb
License: BSD-2-Clause
==> Dependencies
Required: [email protected] ✔, pcre2 ✔
==> Options
--HEAD
Install HEAD version
==> Caveats
Docroot is: /opt/homebrew/var/www
The default port has been set in /opt/homebrew/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
nginx will load all files in /opt/homebrew/etc/nginx/servers/.
To restart nginx after an upgrade:
brew services restart nginx
然后我们打开访达,前往文件夹输入对应的路径
/opt/homebrew/etc/nginx/
打开nginx.conf后,在http服务下面加入rtmp配置
rtmp {
server {
#监听的端口号
listen 1935;
# 应用的名字,推拉流会用到
application live {
# 开启直播
live on;
# 不开启录制
record off;
}
}
}
保存后打开终端,重新加载nginx服务
nginx -s reload
注意,重启电脑吼突然发现有问题!!!因为配置文件里PID默认是注释的
nginx: [error] open() "/opt/homebrew/var/run/nginx.pid" failed (2: No such file or directory)
我们这里使用上面的nginx.conf路径进行启动即可,当然也可以使用这里的链接去解决。
nginx -c /opt/homebrew/etc/nginx/nginx.conf
第五步:测试
我这里测试使用的是obs+vlc,软件操作比较方便。这里给出下载链接
obs
国内平台: 美陆狮 - OBS及OBS插件下载平台
官方平台: Open Broadcaster Software | OBS (obsproject.com)
vlc
官网:官方下载:VLC media player,最棒的开源播放器 - VideoLAN
obs 推流
然后打开设置、直播。服务器这里我使用的是本地127.0.0.1,live是nginx.conf中rtmp配置中的application后面的名字,端口号也是配置里的监听端口,然后点击开始直播就可以啦。
vlc 拉流
打开vlc、文件、打开网络,URL输入推流地址即可。不出意外可以看到视频,到这里基本就成功了。
rtmp://127.0.0.1:1953/live
第六步:配置多个应用以及回放功能
rtmp {
server {
listen 1935;
application live {
live on;
# record off;
hls on; # 开启回放功能
hls_fragment 3s;
hls_playlist_length 10s;
# 存放路径,要确保文件夹存在!
hls_path /usr/local/nginx/hls;
}
# 可以额外增加一个应用
application live2 {
live on;
record off;
}
}
}
第七步:日志查看
双击打开即可
# m芯片的日志文件在
/opt/homebrew/var/log/nginx
# intel芯片的日志文件在
/usr/local/var/log/nginx
第八步:公网设置
如果不是服务器,则需要在路由器设置中开启端口映射以及dmz主机服务。
如果有公网IP的话,则直接在推流和拉流的时候选择公网ip即可。如果有问题可以留言,我本人是主路由器下的子路由连接的服务器,需要配置两个路由器设置端口转发即可。
路由器端口转发方法-百度经验 (baidu.com)
使用Docker配置使用nginx-rtmp
使用docker配置可以省略很多步骤,但是配置的时候个人觉得操作有点不舒服。
第一步:下载docker
官方下载:Docker: Accelerated, Containerized Application Development
第二步:下载对应的镜像
由于是rtmp的,所以这里使用如下的镜像。如果想使用别的可以在docker hub下载
docker pull tiangolo/nginx-rtmp
第三步:测试运行
直接看他的文档tiangolo/nginx-rtmp - Docker Image | Docker Hub即可,其余配置和homebrew安装的nginx-rtmp使用方法一致。