直播平台搭建中使用Nginx推流多个直播平台解决方案
直播平台搭建中使用Nginx推流多个直播平台解决方案
一、业务场景
最近公司的直播业务中,接入了多个第三方的直播服务(网易云信和腾讯云),公司使用OBS
进行推流,需要同时推流到两个平台,但是一个OBS
自身只能推流到一个地址,从而需要有新的解决方案。
根据该业务场景调研了网上大家常用的三种方案:
1.多个OBS:
一台电脑使用多个OBS
推送,但是由于OBS
需要利用CPU进行转码,开启两个OBS
会占据CPU大量资源,从而可能出现转码过载,导致直播掉帧
2. 利用第三方流媒体服务
利用第三方流媒体服务,将OBS
推送到第三方服务器,第三方服务器再推送到配置到多个平台信息信息,但是此问题需要依赖第三方推流服务,第三方服务器是否稳定会直接影响直播效果
3. 搭建本地nginx服务器
搭建本地Nginx
服务器,利用OBS
将视频流推送到本地Nginx
服务器,再利用Nginx
服务器进行转发到各平台
当然,应该还有其他的解决方案,但是自己对视频流这一块简直就是小白,公司对实现的进度要求也比较紧急,所以在有限时间内发现的三种方案中,选择了Nginx
的方案实践(选择原因:相对来说对目前对推流过程变化较小,同时成本也较低),并成功实现了推流到多个平台的需求。
二、实现方案(MacOS下)
由于电脑是MacOS
,所以基于MacOS
的Nginx
分流方案,具体实现方案分为以下三步:
1. 安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制代码
统一对系统插件包管理
2. 安装nginx
brew tap denji/nginx
brew install nginx-full --with-rtmp-module
brew info nginx-full
复制代码
注意,这里两个操作:
第一,使用了brew tap denji/nginx
,因为需要安装包含rtmp
模块的nginx
,直接安装会发生安装错误,所以这里需要使用
第二,安装时一定要安装rtmp
模块,用于配置rtmp
配置
3. nginx配置文件追加配置
安装Nginx后配置文件地址:/usr/local/etc/nginx/nginx.conf
,配置文件中追加rtmp
配置
rtmp {server {listen 1935;chunk_size 10240;application live {live on;record off;push rtmp://p4275c5f7.live.126.net/live/377faa0e54d84db49de0239805f858e8?wsSecret=d25c205a7ab8620ec2078fa11301c4a2&wsTime=1563965458;push rtmp://pushschool.icourt.cc/live/619fb940aac711e98ab27cd30aeb1494?txSecret=5e58356cd2fcc3384b258637a3d8fc90&txTime=5D3C74FF;}}
}
复制代码
其中,push
是需要推送的平台直播地址。
4. 其他
由于因为推流地址会经常发生变化,操作人员是不熟悉技术的同事,所以在Nginx
配配置文件夹中,增加了conf
文件夹,使用include
的方式,引用Nginx
配置文件,直接修改配置文件后,执行nginx -s reload
重新加载配置文件即可
rtmp {server {listen 1935;chunk_size 10240;application live {live on;record off;include ./conf/push.conf}}
}
复制代码
三、总结
总的来说对于开发人员操作流程很简单,然而对于非开发人员来说,配置Nginx
服务器的方案也存在了一些技术壁垒,所以会考虑在之后提供一份shell
脚本直接进行安装,后期可能整合Nginx
,提供提供可操作界面的软件,希望自己能完成这个立下的flag
四、参考
如何配置Nginx推多个直播平台
----------- 08.06追加 -----------
执行脚本,将内容调整保存为install.command
,其中安装nginx-full的课程可能存在下载比较缓慢,如果有问题可以重复执行:
echo '安装homebrew'
if command -v brew; thenecho '已经找到了homebrew,现在尝试进行更新 >>> 'echo '替换 brew.git 仓库地址>>> ' cd "$(brew --repo)"git remote set-url origin https://mirrors.ustc.edu.cn/brew.gitecho '替换 homebrew-core.git 仓库地址>>> 'cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.gitecho 'brew 更新中...'cd "$(brew --repo)"git pull origin masterbrew updateecho '还原 brew.git 仓库地址>>>'cd "$(brew --repo)"git remote set-url origin https://github.com/Homebrew/brew.gitecho '还原 homebrew-core.git 仓库地址' cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://github.com/Homebrew/homebrew-core.git
elseecho '未找到homebrew,开始安装 >>> '/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fiecho '检查 nginx-full 安装情况 >>> '
if command -v nginx; thenecho 'ngxin-full 已经安装 >>> '
elseecho '开始安装 nginx-full >>> 'brew tap denji/nginxbrew install nginx-full --with-rtmp-module
fiecho '开始配置 nginx.conf >>> '
cd /usr/local/etc/nginx
mkdir conf
touch conf/push.conf
echo '
rtmp {server {listen 1935;chunk_size 10240;application live {live on;record off;include ./conf/push.conf}}
}
' >> nginx.confecho '打开 push.conf 所在目录,配置相关命令行文件'
touch conf/reload.command
chmod 777 conf/reload.command
echo 'nginx -s reload' >> reload.command
open conf
echo '设置 nginx 开机启动 >>>'
brew services start denji/nginx/nginx-full
echo '配置成功!'
直播平台搭建中使用Nginx推流多个直播平台解决方案相关推荐
- 直播间搭建中关于短音效开发的直播间源码实现方式
一般在直播间搭建的过程中,由于视频直播是比较消耗性能资源的,所以在添加其中每一个功能的时候,是需要谨慎的去考虑性能成本的今天来介绍一下封装短视频音效开发时的处理思路,通俗点讲就是主播在进行开播时播放音 ...
- 在直播软件搭建中,如何基于rtmp实现视频直播?
最近几年直播软件搭建可谓大火,这也就导致了在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是在直播软件搭建中,如何基于rtmp实现视频直 ...
- 网络直播平台搭建中直播协议和视频推流
网络直播平台搭建中直播协议和视频推流 直播协议 流媒体分为直播和点播.通常来说点播使用的都是HTTP协议,直播主要用的是RTMP, HLS, HTTP-FLV等.近年来直播协议也有新发展如DASH,但 ...
- 直播平台搭建,直播间搭建中关于直播推流的三种常见协议
直播行业经过爆发式增长后"荷尔蒙经济"逐渐减退,如今的直播行业商业模式已经趋于成熟,并开始进入发展的新阶段.直播平台搭建项目也早已成为热门开发项目,但是在进行项目开发之前,关于直播 ...
- 直播平台搭建中你需要注意的小细节
直播平台搭建的意义是为了实现完整的直播流程,为了完成直播平台搭建,就必须其中蕴含着那些步骤! 1.采集 采集又称数据获取,在直播流程的层面上来讲,是利用摄像头等工具,从系统外部采集数据并输入到系统内部 ...
- 详解音视频直播平台搭建中的低延时
详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...
- Android直播软件搭建中实用的录制编辑方案有哪些
Android直播软件搭建中实用的录制编辑方案有哪些 经大量数据显示,直播已经发展成为一种全民参与.共享和生产的文化现象.它的火爆不仅丰富了大众的艺术审美水平和精神文化,而且也影响了一代人的世界观.人 ...
- 如何在直播间搭建中看到帅哥美女?
如何在直播间搭建中看到帅哥美女? 三个名词系列 我这里列三个名词系列,你先大致有个印象. 1. 名词系列一: AVI.MPEG.RMVB.MP4.MOV.FLV.WebM.WMV.ASF.MKV.例如 ...
- 从零开始,我的第一个物联网平台搭建好了,ESP8266+DHT11+阿里云平台+IOT StudioWEB应用开发,实现网页实时查看设备上报的信息,控制开关
记录下自己做的第一个物联网项目,真正从零开始,断断续续花了2个月时间看各种视频,网站学习有关物联网的知识,期间碰到过好多问题,没有人指导,都得靠自己慢慢研究,有时会很迷茫,没有方向,但还得坚持下去,当 ...
最新文章
- 【pytorch】拟合sin函数
- select sqlite 唯一_SQLite中的SELECT子句使用通配符
- go语言学习(7)锁
- 流行的9个Java框架介绍: 优点、缺点等等
- 基础知识收藏(ASP.NET的OnClientClick与OnClick事件)-2013.07.10
- springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)
- 使用Laravel框架发送邮件
- php 访问 sharepoint列表,SharePoint—用REST方式访问列表
- 成为java gc专家_成为JavaGC专家上(2)—如何监控Java垃圾回收机制
- [转载] python while循环 打印菱形
- linux fdisk的分区和格式化和挂载相关操作说明
- android surfaceview , videoview 背景加圆角
- CDN是什么?为何要用CDN加速网站?
- M2增速8%处于历史地位——解读10月货币数据
- 关于变压器的这些小知识
- Vmware虚拟机ikuai路由配置
- 标准柯西分布_柯西分布没有数学期望
- 将您重定向的次数过多什么意思_【linux二三轶事】重定向是啥?文件描述符是啥?...
- 注意力机制+软阈值化 = 深度残差收缩网络(Deep Residual Shrinkage Network)
- 【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)
热门文章
- 廖雪峰python教程杨辉三角_廖雪峰--python教程:笔记三
- 对当前网上公开的聊天对话机器人语料整理
- 数字化工厂:车间智能工位机详解
- gitblit+jenkins本地服务
- WEB自动化_告警框处理(对话框、确认框、提示框、输入/编辑框、勾选框、单选框、复选框、下拉框)
- 控制工程实践(4)——线性控制系统的稳态误差(之一)
- 2019 前端年终总结(干货满满)
- 知乎上的48条神回复!看完人生透彻了许多!
- 解决非系统盘出现Program Files文件夹以及Program Files下的ModifiableWindowsApps文件夹无法删除的问题。
- RabbitMQ 安装及常用操作命令