前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Nginx 搭建多平台直播

使用 Nginx 搭建多平台直播

原创
作者头像
Nyarime
发布2022-05-28 19:29:19
9320
发布2022-05-28 19:29:19
举报
文章被收录于专栏:云外科技云外科技

准备工作

购买腾讯轻量服务器: https://curl.qcloud.com/I8Z5glUD

如果您已经安装好 Nginx 和 nginx-rtmp-module 可以跳过此部分

使用包管理安装的 Nginx

因为我已经安装过 Nginx,使用的是使用包管理安装的 Nginx,您也可以选择编译安装的方式进行,因为本人太菜,每次进行编译都会出错,所以此处不在阐述。Nginx 官方有打包好的 Nginx 可以直接通过 apt-get install nginx -y 完成安装,但是这样做的后果是你安装的是一个可能非常老旧和充满隐患的 Nginx (此部分摘自 DCC大佬 的博客)

Ondřej Surý 的 PPA

更新非常快速,而且做的质量也非常好。

对于 Ubuntu 系列:

代码语言:txt
复制
add-apt-repository ppa:ondrej/nginx-mainline -y

对于 Debian 系列:

代码语言:txt
复制
wget -O /etc/apt/trusted.gpg.d/nginx-mainline.gpg https://packages.sury.xyz/nginx-mainline/apt.gpg

cat >> /etc/apt/sources.list.d/nginx.list << EOF
deb https://packages.sury.xyz/nginx-mainline/ $(lsb_release -sc) main
EOF

然后我们更新系统、安装必要组件和 Nginx 本身:

代码语言:txt
复制
apt update && apt install nginx-extras -y

查看 Nginx 版本和参数和安装目录

代码语言:txt
复制
nginx -V
whereis nginx

烧饼博客大佬打包的 Nginx

使用最新 OpenSSL 编译,支持 TLS 1.3, GeoIP2, brotli 压缩等

使用方法

代码语言:txt
复制
curl https://mirror.xtom.com/sb/nginx/public.key | apt-key add -
echo "deb http://mirror.xtom.com/sb/nginx stretch main" > /etc/apt/sources.list.d/sb-nginx.list
apt update
apt install nginx-extras

安装成功后使用 nginx -V 查看信息

完成 Nginx 的安装后,接下来安装 rtmp 模块

安装 rtmp 模块

debian 9 用户可以直接使用 apt 安装,需启用 stretch-backports 源:

代码语言:txt
复制
apt install libnginx-mod-rtmp libnginx-mod-http-lua -t stretch-backports

安装完成后,准备阶段就结束了,下面开始配置 Nginx。

配置 Nginx

打开 nginx.conf 在文件中添加以下部分

代码语言:txt
复制
rtmp {							#RTMP服务
    server{
        listen 1935;			#服务端口
        chunk_size 10240;		#数据传输块的大小

        application live {		#直播
            live on;
            record off;
            on_publish http://YOUR_SERVERNAME:2080/auth;
            push rtmp://live.twitch.tv/app/YOUR_LIVE_API;	#RTMP直播地址1
            push rtmp://a.rtmp.youtube.com/YOUR_LIVE_API;	#RTMP直播地址2
         
        }
    }
}  

替换上方的 RTMP直播地址需要自己进行替换,现在我们完成了服务器上的分流部分

接下来,我们配置一个 http 服务器,此部分与平时配置网站 conf 的过程比较类似

代码语言:txt
复制
server {
        listen 2080; #此处可自定义
        
        server_name YOUR_SERVERNAME;
        location /auth {
            rewrite_by_lua '
                ngx.req.read_body()
                local name = ngx.req.get_post_args().name
                if (name == "xxxYOUR_UUID") then
                    ngx.status = 200
                    ngx.say("OK")
                    ngx.exit(200)
                else
                    ngx.status = 403
                    ngx.say("Forbidden")
                    ngx.exit(403)
                end
            ';
        }
    }

此处的 xxxYOUR_UUID 是我们使用 OBS 推流时候的"流名称",可以使用 UUID Generator 进行生成。

经测试不能加 TLS

测试 RTMP 服务器配置

启动 Nginx 服务后,在服务器上执行下面的命令:

代码语言:txt
复制
curl -0 http://127.0.0.1:2080/auth -d "name=xxxYOUR_UUID"

xxxYOUR_UUID 替换成前面生成的 UUID,应该输出 OK,再把 xxxYOUR_UUID 换成一个错误的,应该输出 Forbidden。

配置 OBS 推流

如果身份验证没有问题,我们就可以使用 OBS 来推流了。

在 OBS 设置中选择“自定义流媒体服务器”,URL 填入 rtmp://YOUR_SERVERNAME/live (YOUR_SERVERNAME 是推流服务器的 IP或域名), 流名称填入我们前面生成的 UUID。

设置好后单击 OBS上的“开始推流”,不出意外的话就可以同时向我们设置的平台推流了。

参考文章

Debian / Ubuntu 环境下 LEMP 建站解析

arut/nginx-rtmp-module

illuspas/nginx-rtmp-win32

借助 Nginx 搭建带简单认证的直播推流服务器,实现多平台同步直播

Nginx学习之配置RTMP模块搭建推流服务

直播推流nginx-rtmp-module集成(

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 使用包管理安装的 Nginx
    • Ondřej Surý 的 PPA
      • 对于 Ubuntu 系列:
      • 对于 Debian 系列:
    • 烧饼博客大佬打包的 Nginx
      • 使用方法
  • 安装 rtmp 模块
  • 配置 Nginx
  • 测试 RTMP 服务器配置
  • 配置 OBS 推流
    • 参考文章
    相关产品与服务
    云数据库 MongoDB
    腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档