一、安装Nginx

  1. 下载nginx,注意,一定要选择nginx 1.7.11.3 Gryphon.zip这个版本,或者点这里直接下载,据说只有这个版本的nginx在编译时是加入了rtmp模块的,其他版本的都没有,包括nginx官方下载的也是没有包含rtmp模块的。

  2. 解压nginx 1.7.11.3 Gryphon.zip,右击这个压缩包,选择“解压到nginx 1.7.11.3 Gryphon”,解压后把“nginx 1.7.11.3 Gryphon”重命名为“nginx"。

  3. 打开nginx/conf目录,新建一个文件:nginx.conf,然后在这个文件中输入如下内容(可以直接复制):

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    rtmp {
        server {
            listen 1935;
            chunk_size 4000;
            application live {
                 live on;
                 allow publish 127.0.0.1;
                 allow play all;
            }
        }
    }
    

二、启动、停止nginx

在nginx目录上面的地址栏中输入cmd,然后按回车,如下:
在这里插入图片描述
在这里插入图片描述
此时会打开一个cmd窗口,并且当前路径是在nginx目录下的,如下:
在这里插入图片描述
输入nginx命令来启动nginx,如下:
在这里插入图片描述
如上图所示,nginx就是启动成功了,在这个窗口中无法再输入命令了,即使按Ctrl + C也是无法结束的,直接关掉这个命令窗口也没用,nginx还是在运行中的。要想关闭nginx需要再启动一个新的cmd窗口,按上面的操作一样启动一个cmd窗口,然后输入:nginx -s stop,这样nginx就停止了,如下:
在这里插入图片描述

三、推流

使用任意的推流软件都可以,推流地址为:rtmp://localhost:1935/live/home,拉流地址也是这个。注:在OBS中,需要一个串流密钥,把地址中的home删除,填到串流密钥中即可。

这里我们使用OBS来演示推流,首先下载OBS,并安装,然后运行,运行效果如下:
在这里插入图片描述
OBS可以推的来源很多,比如:显示器、游戏、视频文件、摄像头等等,具体百度OBS使用教程,这里我就以推一部电影为示例,我们点击左下角“来源”窗口的加号按钮,然后点击“媒体源”,如下:
在这里插入图片描述
之后会弹出创建或选择源的对话框,我们在此界面中输入“功夫”两个字,表示这部电影叫功夫,如下:
在这里插入图片描述
接下来会出现一个新的对话框,我们点击“浏览”按钮来选择一部电影,如下:
在这里插入图片描述
点击“确定”后,电影就出现在OBS上,并且开始播放了,如下:
在这里插入图片描述
如上图,电影画面有点小,我们可以拖动红框以调整电影大小,按住电影拖动还可以调整其位置,如下:
在这里插入图片描述
到此,我们就设置好了要推流的内容为一部电影,但是推到哪个服务器上呢?这就需要设置一下了,点击右下角的“设置”按钮,然后在设置界面中选择“推流”选项卡,然后在“服务”中选择“自定义…”,然后在“服务器”中填入推流地址:rtmp://localhost:1935/live,在“串流密钥”中填入:home,如下:
在这里插入图片描述
其它的设置还有很多,大家可以先不设置,后面有时间来再来慢慢研究各种设置的功能,这里我只将一个比较重要的设置,所有的Android手机设备都支持的音频采样率为44.1kHz,其他的采样率有可能不支持,所以我们可以把采样率设置一下,如下:
在这里插入图片描述
其它的我就暂时不设置了,点击“确定”按钮后完成设置并回到主界面,然后再点击右下角的“开始推流”按钮,如下:
在这里插入图片描述
OK,到这里,我们的电影《功夫》就通过OBS工具以流的方式不停的推到我们的nginx服务器上,接下来就是从服务器上拉流来看电影了。

四、拉流

  1. 下载VLC播放器,并安装,然后运行运来,并点击“媒体”菜单,选择“打开网络串流(N)…”,如下:
    在这里插入图片描述
    点击“网络”选项卡,并输入串流地址:rtmp://localhost/live/home,如下:
    在这里插入图片描述
    如上图,点击“播放”按钮,然后界面加载一会之后就能看到电影画面了,如下:
    在这里插入图片描述
    在这里插入图片描述
    OK,到这里,RTMP服务器的搭建、以及推流、拉流的到这里就讲完了,如果此文章对你有帮助,可以点个赞并收藏哦!

五、备份

为了预防官方的下载连接失效,这里进行了备份,而且也打包了一个解压即可使用的版本:nginx.zip,如官方连接失效可从这里下载哦:https://gitee.com/daizhufei/windows-rtmp-server

六、添加m3u8支持

即可以通过一个m3u8地址进行拉流。
创建一个目录用于存在ts文件,比如:D:\ts\hls,推流的时候生成的m3u8和ts文件将会保存到此目录,示例如下:

在这里插入图片描述

  1. 先停止nginxnginx -s stop

  2. 修改nginx\conf\nginx.conf,如下:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    rtmp {
        server {
            listen 1935;
            chunk_size 4000;
            application live {
                live on;
                allow publish 127.0.0.1;
                allow play all;
    			 
    			# HLS 输出配置
                hls on;  # 启用 HLS
                hls_path D:/ts/hls;  # TS 切片存储路径(必须提前创建目录)
                hls_fragment 5s;  # 每个 TS 切片时长
                hls_playlist_length 30s;  # M3U8 列表保留时长(覆盖旧切片)
            }
        }
    }
    
    # HTTP 服务配置(用于访问 HLS 流)
    http {
        include       mime.types;  # 引入 MIME 类型定义
        default_type  application/octet-stream;  # 默认响应类型
        sendfile      on;  # 启用高效文件传输
        keepalive_timeout  65;  # 客户端连接超时时间
    
        server {
            listen       80;  # HTTP 监听端口
            server_name  localhost;  # 服务器域名(本地测试用 localhost)
    
            # 配置 HLS 文件访问路径
            location /hls {
                types {
                    application/vnd.apple.mpegurl m3u8;  # M3U8 类型
                    video/mp2t ts;  # TS 切片类型
                }
                alias D:/ts/hls;  # 指向 TS 切片存储目录
                add_header Cache-Control no-cache;  # 禁用缓存(确保实时更新)
                add_header Access-Control-Allow-Origin *;  # 允许跨域访问
            }
    
            # 默认首页(可选)
            location / {
                root   html;
                index  index.html index.htm;
            }
        }
    }
    
  3. 启动nginx

  4. OBS推流,和以前一下,推流地址不变。

  5. 拉流,使用VLCPotPlayer播放网络地址:rtmp://localhost/live/homehttp://localhost/hls/home.m3u8

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐