Mac-M1 手把手nginx服务器搭建,实现rtmp推流

  最近发现有公网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使用方法一致。

你可能感兴趣的:(Mac-M1 手把手nginx服务器搭建,实现rtmp推流)