我找了一下,OBS 目前要推流到多个平台,大部分用的方法是这么几种:使用OBS的录制功能,录制到“某个rtmp://的网址”上

多开OBS,电脑可能会卡,而且一个游戏、一个摄像头只能被一个OBS抓到画面

不用OBS而用XSplit,这软件想要推多个平台是要钱的

用Restream.io提供的服务,要钱的

本地架一个nginx-rtmp服务

用rtmprelayer软件做转发

这些方法我觉得都比较麻烦,有的门槛还有点高(比如钱的门槛啊自己架服务器的门槛啊高配电脑的门槛啊……)。

其实,免费开源的OBS,里面的模块设计是可以多开推流的。只是作者没有在界面上给你做这个功能。那么简单说就是只要做个界面,就能把OBS的这个多推流功能给开放出来。

因为做这个的一个目标就是要简单易用门槛低,希望界面是一眼看过去就知道是怎么用的:多推流插件界面截图

安装方法也很简单,整个文件夹解压到OBS的安装目录下,然后再启动OBS,多路推流的界面就会显示出来了。

必须要 OBS 25.0 或者更高版本才能用。原因后面会解释。

下载在这里:

https://github.com/sorayuki/obs-multi-rtmp/releases

使用的时候还请多注意平台规范。

===水很多干货很少的正文开始===

上次写专栏是为了什么,我不太记得了。内容大概是科普吧,也不懂普到了没有。不过结果是,只写了两篇就没有坚持下去,没有下文。毕竟每天上班都那么多事,做完以后回来根本就是只想懒惰地看动画玩游戏的状态,写这种东西没什么动力。

这次的话,说起来有点打广告的意思,给自己做的东西打广告。我在网上搜关键字的时候,发现相关的教学还挺多的,那也就意味着需求会比较多吧?推特上搜出来大部分是要油管啊推起啊笑嘻嘻站啊秀房间之类的地方想同时开。但是现有的我能找到的方法,就“配合着OBS使用”这个方面来说,都感觉不是很“正统”。不过正统是一回事通用是另一回事、人家的那些方法,不用OBS而用其他什么直播软件,也是可以配合的……

在这里我有点不太想一个个名词,比如什么推流啊音视频信号啊之类的,都解释过去。这里的内容会比较专业化,职业的程序员,或者是编程爱好者,如果有接触过玩过直播的,可能会能听得懂。推流就是指自己电脑上的直播画面和声音数据,上传到服务器;画面信号这里特指内存中保存的位图(说BMP就能懂吧,不过和平时看到的BMP文件里存的东西不太一样,性质是差不多的),声音特指内存中保存的采样(类比就是WAV)。

上面的方法2暂且跳过,确实没什么好解释的。关于只是用OBS本身不使用附加软件的方案,就只说方法1了。OBS软件里提供了两套能够用来“输出”的模块,一个在 obs-outputs.dll 里,包含 rtmp_stream 和 flv_output;一个在 obs-ffmpeg.dll 里,叫做 ffmpeg_output。这些DLL文件只要翻一翻 OBS 的安装目录,就可以看到。

根据OBS设置项的不同,画面和声音信号转成 H.264 和 AAC 数据包的流程也会不同。只开推流的时候,它是像下面这个样子的:

捕捉、合成等处理之后的音视频信号,从 libobs.dll 里出来,进入编码器(obs-x264.dll,obs-ffmpeg.dll 里的 ffmpeg_nvenc 英伟达硬编 ,enc-amf.dll 里的 AMD 硬编,obs-qsv.dll 里的核显硬编,win-mf.dll 里的Windows自带编码器),然后编码器输出的一个个数据包送到 obs-outputs.dll 里面去,封装成 FLV 格式通过 RTMP 推流到服务器。

但是如果用户开了录制,并且录像格式选择的是“标准”,编码器是“使用推流编码器”,那么OBS内部的数据流会变成这样:

此时还是只有一套编码器,保存录像和推流用的是一样的。好处是开录像或者不开录像,对电脑性能的消耗没有什么区别。因为这里面最耗资源的是中间那个编码器。

OBS在录像的时候是可以允许用户使用独立的编码器的

此时OBS会开两套编码器来应对推流和录像。这也就是说,这个时候用户可以调成录像和推流的画质是不一样的:网络比较烂的时候,推流用低码率,然后录像用高码率,这样直播完了之后想要剪辑,不会变成粪画质。

到这里为止,录像一直用的是“标准”模式,能给选保存位置的地方也就一个“录像路径”。目前还和多推流没有关系。接下来要说“自定义输出(ffmpeg)”。

FFMPEG是一套开源的多媒体处理软件,最基本的用法是通过输入命令的方式对视频文件进行处理和压制。里面的各种 DLL 也可以单独拿出来用。OBS这里就是DLL单独拿出来用的。前面图片里出现的 ffmpeg_muxer,就是把它里面的 avformat.dll 拿来用,使得一个个的 H.264 和 AAC 数据包可以存成 FLV、MP4 等文件。在OBS的自定义输出(ffmpeg)模式下,它不仅用了 avformat.dll,还用了 avcodec.dll。它的数据流会变成这样

和上面几张图最大的区别是,这里的 ffmpeg_output 再往后是没有流程的。因为从音视频信号往后,所有的操作都由 ffmpeg 完成;OBS不是把编码后的 H.264、AAC 数据包拿出来然后去推流或者去保存文件,而是ffmpeg自己爱存哪里存哪里的状态。这种模式下,用户可以把“ffmpeg输出类型”改为“输出到URL”。这里的URL理解为“网址”就好了,可以填一个RTMP的推流地址和推流码。此时录像就变成了第二个“推流”,也就实现了两路推流。

这里有一个要补充的是,因为 ffmpeg 的推流功能实际上用的是 avformat.dll ,也就是说上面那个 ffmpeg_muxer 我觉得也可以拿来推流。可能是 OBS 在界面上没做这样的功能或者 ffmpeg_muxer 里面没有做相关兼容。这个我没调查研究过,所以就不乱说了。

录制功能拿来推流也是有一些缺点,比如它没有OBS那样的丢包控制,比如看不到现在录制的那一路推流是不是流畅、帧率多少、网络阻塞不阻塞。

到这里为止,OBS的几种推流同时录像的模式已经解释完了。但是在这几种模式里,是没用共用编码器的同时开两路推流的。编码器可以说是直播过程中最最消耗系统资源的模块,这个如果能共用,那么能节省非常大量的系统资源。

实际上研究过OBS的代码,就会发现其实是可以组装出这样的数据流图的

不要什么 ffmpeg_muxer,反正接口一样,换成 rtmp_stream,每个都是推流,这样就是多推流。但是这里的 obs_encoder 是 OBS 主界面创建的。OBS在启动之后,并不会创建这个东西,只有在你第一次开始推流(或者“使用推流编码器”模式下的录像)的时候,把这些东西创建出来。不过创建出来以后你停止推流或者录像,它并不会删除这些编码器。修改了OBS的设置项的话,它会删除,然后下一次开始推流的时候又会创建。所以如果启动OBS以后没有开过直播或者录像,我的插件开始直播会提示要你开一下直播,否则我代码里获取不到这个它的编码器,也就没法和它共用、也就没法省资源。

如果想要设置不同的码率或者分辨率,那么也只要

就搞定了。和上面的“标准”模式的录像是一样一样一样的。OBS 在它的核心里面提供了这样的能力,但是在界面上没做这样的功能。我做的插件,就是给它加一个这样的界面、能用这样的功能。

到这里为止,插件里面是怎么做的、做了什么,就解释完了。其实本来也就代码都放上来了,看看代码就什么都知道了……里面并没有秘密。

顺便说一下,在OBS 25.0以前的版本里,它在 rtmp_stream 模块用了一些全局变量。这也就导致 rtmp_stream 的多开会产生一些问题,比如崩溃。但是这种全局变量和多线程问题,又不是100%出现的。只能说我以前在旧版OBS上这么搞过,然后自己测没问题,拿去给主播用的时候崩在人家专业主播那边,一大堆观众看一半直播没了,我慌得要死,现在一直觉得我名声在那边已经臭了。orz…………

用 rtmprelayer 和 nginx-rtmp 按我理解是一样的,都是自己机器上开个 RTMP 服务器,让 OBS 把直播流推到这个 RTMP 服务器上,这个服务器软件收到数据以后,再转发给各个平台。然后 Restream.io 呢,就是把这个“开在自己机器上的RTMP服务器”开到了它的服务器上,由它来给你转发。这样呢好处就是自己网络状态并不是那么牛逼的情况下也可以同时推四五六七八个平台,反正 Restream.io 用服务器去给你转。不过看起来价格并不便宜?

obs多开教程_做了个OBS多路推流插件相关推荐

  1. obs多开教程_给大家推荐一个电脑推流推流多开、十开软件、多平台推流软件的推流软件...

    常用的推流软件有Open Broadcaster Software.Adobe Flash Media Encoder.iAVcast.此刻直播助手等. 估计使用最多的应该就是第一个OBS推流软件.O ...

  2. obs多开教程_OBS多路推流插件

    OBS多路推流插件是由B站的一名网友开发的OBS辅助插件,使用插件可以将隐藏的推流功能展示出来,必须要OBS25.0或者更高版本才能用. 相关软件软件大小版本说明下载地址 OBS多路推流插件是由B站的 ...

  3. obs 直播 多路推流插件 简介

    目录 obs官网简介 obs下载地址 多路推流插件 下载地址 多路推流插件 windows版 安装使用 多路推流插件 mac版 安装使用 (未测试) 注意 最新版 OBS-Studio-27.0-Fu ...

  4. OBS多路推流插件使用方法(超级详细,亲测可用)

    前提:OBS版本需要高于25.0 一.下载地址: https://download.csdn.net/download/longgeaisisi/12597711 二.下载后解压内含文件如下: 三.把 ...

  5. obs多路推流插件_直播教程 | OBS主播如何解锁虎牙直播全部的功能玩法?

    OBS虚拟摄像头使用教程 OBS主播日常苦恼: 好想玩玩虎牙的小程序,心愿榜.你画我猜.小虎弟,还有这个那个! 好想用虎牙的连麦PK和小姐姐连麦! 好想拥有新出的智能助手旺财! ... ... 其实现 ...

  6. obs多开教程_AION多开的方法

    SD抓外挂抓得严,我相信有的玩家没用外挂打怪,PK也给罚了,因为有的玩家利用了外挂多开,像一些代刷OBS的工作室的就是,其实这个用挂多开也会给罚的.下面这告诉个大家不用外挂也可以多开的方法! 进入正题 ...

  7. Mac使用OBS直播配置教程|解疑答惑

    Mac使用OBS直播配置教程|解疑答惑   这个教程方便Mac使用OBS直播,解决了以下几个使用Mac直播中一定会遇到的问题: 主流直播平台,直播推流怎么配置? 为什么Mac直播的时候,别人听不到电脑 ...

  8. obs多路推流的实现,抖音直播、快手、淘宝、拼夕夕多平台一个画面同时直播,无人直播

    最近最火的软件,无非抖音.抖音最火的内容无非是直播带货,而直播带货的平台有抖音.快手.淘宝.拼夕夕. 直播少不了主播,请一个主播不容易,可能月薪几万,成本较高.而如果自己培养一个主播,成功的概率较低, ...

  9. obs可以推到中转服务器吗,[经验分享]OBS 如何实现多路推流

    简介 平时我们使用OBS推流的时候,都知道是在[设置]中设置服务器及串流密钥 但这里只能设置1个,那么如何才能把流同时推向多个平台呢,如:B站,活动行,腾讯,虎牙,... 等直播平台呢 步骤 1.确认 ...

最新文章

  1. linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...
  2. 用单链表实现栈及操作
  3. ORA-03113: end-of-file on communication channel Process ID: 252 Session ID: 1 Serial number: 3
  4. c#按ESC退出 或者接受其他键盘消息
  5. 计算机小键盘价格,带小键盘的笔记本电脑是多少寸
  6. 如何理解什么是放射?
  7. 微信公众号支付 java_微信公众号支付开发全过程(java版)
  8. iOS打包ipa安装包的流程
  9. php计算macd,php交易者macd返回false
  10. 对嵌入式开发方向的一些思考:在物联网方向
  11. R语言rvest包网络爬虫
  12. 万恶淫为首,你想知道的真相!
  13. java电子贺卡_用java写一个新春贺卡,可转exe的
  14. 【Multisim仿真】NE555电路三角波、方波、正弦波发生器
  15. HTTP协议个人总结
  16. 编写程序,输入本金、年利率和年份,计算复利(结果保留2位小数)
  17. 学习python[:,:]
  18. 数字图像处理(五)几何变换之图像平移、镜像、绕中心点旋转、缩放等
  19. 2009年三季度基金持股增仓表
  20. 如何将数据从Excel文件导入SQL Server数据库

热门文章

  1. 怎样成为韩寒那样受欢迎的作家?
  2. iOS开发之视频兼容及网页无法播放的解决办法
  3. jQuery事件知识点部分总结
  4. USB设备绑定固定端口
  5. 终结 Android 性能流言
  6. 微信页面关于点击按钮关注公众号被封后的一点变通
  7. 超简单理解自平衡二叉查找树的 旋转 是什么?
  8. ignite缓存使用
  9. 2022-2027年中国广东省责任保险行业发展监测及投资战略研究报告
  10. 新浪微博简单搜索接口