Debian11 搭建RTMP流媒体服务器-nginx-rtmp实现

2023-05-16

1.首先安装必要开发者工具,如gcc make cmake 等工具软件,以及wget下载软件,unzip解压软件

apt install build-essential wget unzip

2.安装nginx+rtmp运行所要用到的库和依赖环境

apt install libpcre3 libpcre3-dev
apt install zlib1g-dev
apt install openssl libssl-dev

3.下载nginx-1.20.2源码

wget -c http://nginx.org/download/nginx-1.20.2.tar.gz

4.下载nginx-rtmp-module
https://github.com/arut/nginx-rtmp-module

 5.解压所ngnix源码和rtmp预编译的zip包

tar -zxvf nginx-1.20.2.tar.gz
unzip master.zip

6.进入nginx源码文件夹,进行手动编译安装。这里假设 nginx和rtmp文件夹都在 /home/userA/ 下

./configure --prefix=/usr/local/nginx-1.20.2 --add-module=/home/UserA/nginx-rtmp-module-master  --with-http_ssl_module
make
make install

7.新建文件夹,用于保存nginx所形成的web服务的文件

mkdir /usr/share/nginx /usr/share/nginx/html /usr/share/nginx/html/live
chmod -R 0777 /usr/share/nginx/html/live

 8.配置nginx服务,主要是设置web服务的主目录和推流到的端口、临时文件夹

vim /usr/local/nginx-1.20.2/conf/nginx.conf

  8.1首先设定web服务的根目录和网页端口
找到 server {} 配置段,修改

location / {
    root   /usr/share/nginx/html; #主要修改了这一句,定义了web服务的根目录
    index  index.html index.htm;
}

注意: 如果要开启对IPV6的支持,需要在 listen 80; 下面加一行

        listen [::]:80 ipv6only=on;

 

 8.2增加如下内容,也就是设置 rtmp服务器的监听端口,推流数据的存储位置等

rtmp {
    server {
        listen 5678;  #监听的端口
        listen [::]:8089 ipv6only=on; #开启对ipV6 的支持,允许通过ipv6访问
        chunk_size 4096;
        application live {
            live on;
            record off;
            allow play all;
                        }
            }
      }

9.启动nginx

/usr/local/nginx-1.20.2/sbin/nginx -c /usr/local/nginx-1.20.2/conf/nginx.conf

注:可以编辑一个nginx.service 服务,用systemd 配置为开机自启动

[Unit]
Description=Nginx Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/nginx-1.20.2/sbin/nginx -c /usr/local/nginx-1.20.2/conf/nginx.conf
ExecReload=/usr/local/nginx-1.20.2/sbin/nginx reload -c /usr/local/nginx-1.20.2/conf/nginx.conf
LimitNOFILE=1048579

[Install]
WantedBy=multi-user.target

10. 使用ffmpeg 推流一个mp4视频测试一下

ffmpeg -re -stream_loop -1 -i /home/video/test_video.mp4 -f flv  "rtmp://192.168.1.10:5678/live/99745321&60"
#live就是我们增加的rtmp模块的名称,99745321&60 这是一个随意编辑的推流码,拉流时需要这个来确定拉哪个视频。一个推流码,代表一个视频,可以向服务器推流多个视频。

 11.使用VLCplayer 播放推流的内容

 没有什么问题的话,稍等2~3秒,播放器即可打开推流的视频

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Debian11 搭建RTMP流媒体服务器-nginx-rtmp实现 的相关文章

  • 站点启用/中不允许使用 nginx“mail”和“stream”指令

    当我尝试在 nginx 中使用流或邮件指令时遇到问题 我正在使用 nginx 1 16 1 和 Ubuntu 18 04 4 LTS 这是我的 nginx conf user www data worker processes auto p
  • 为什么 Nginx 以相反的顺序提供客户端 SSL DN?

    我很好奇为什么某些 Web 服务器 例如 Nginx 以相反的顺序提供客户端 SSL DN Web 应用程序将 DN 发布到 Java Web 服务 该服务尝试创建 Javajavax naming ldap LdapName http d
  • 为什么要使用 Node.js 安装服务器(Nginx、Apache...)? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 Node js Express Web 框架下需要 apache https stackoverflow com questions 9287747 why do we need apache
  • 从 Nginx 到 Express.js 上的 socket.io 的反向代理上“无法获取”

    我已经关注了通过私有网络让 Node js 在两台 Ubuntu 14 04 服务器上通过 Nginx 工作 Node js 位于 myappserver 上 通过私有 IP myprivatewebserver 访问 并通过 mypubl
  • 为什么在生产中得到空 CSS 文件?

    我在文件中放入了很多css文件active admin css scss Active Admin s got SASS import active admin mixins import active admin base import
  • Docker 与 nginx 组合不断显示欢迎页面

    我是新来的docker并尝试使用最简单的 docker compose yml 显示一个 hello world 页面 并在此基础上构建最终完整的LEMP堆栈它将与我的服务器具有相同的配置 然而大多数教程已经过时 并且有很多使用方法dock
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • 当请求太大时,Nginx(我认为)会以错误的权限保存文件

    所以 我对托管和 Linux 等都是完全陌生的 所以如果我说错了 请原谅我 我还在学习 我正在使用 Django 创建一个小型个人网站 我想把它放到网上看看是否一切正常 我从 linode 买了一台便宜的服务器 并使用 Digital Oc
  • 如何将多个域路由到多个节点应用程序?

    我习惯了典型的 Lamp Web 托管环境 您只需单击 cpanel 中的几个按钮 您的域就会被分区并映射到 htdocs 中的文件夹 我经常使用 Node js 但做同样的事情似乎并不那么简单 如果我有多个节点应用程序 并且我想将doma
  • flash/flex:渐进式下载与 rtmp

    我试图理解并真正确定何时在 Flex flash 中使用渐进式下载与 rtmp 看来主要的一点是 rtmp 不与 http 一起提供服务 而渐进式下载则由 http 提供 由于它不是 rtmp 因此资源受到保护 因为无法从 swf 外部连接
  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • Docker:Nginx 和 php5-fpm docker 不说话

    我想进行完全 Docker 化的 Drupal 安装 我的第一步是让容器与 Nginx 和 php5 fpm 一起运行 两者都基于 Debian 我在 CoreOS alpha 频道 使用 Digital Ocean 我的 Dockerfi
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • nginx 匹配位置中的特定单词

    我在匹配 nginx request body 变量中的特定单词时遇到问题 如果正文请求中有特殊单词 我想代理传递 所以我的方法是这样的 location php if request body proxy pass http test p
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • 为什么 opcache 没有刷新?

    我用guzzlehttp guzzle封装在拉拉维尔 8 升级到后PHP 8 I get Symfony Component ErrorHandler Error FatalError Invalid opcode 117 2 0 in f
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟

随机推荐