网易首页 > 网易号 > 正文 申请入驻

如何用 OBS 和 WebSockets 播放视频流 | Linux 中国

0
分享至

本文字数:4340,阅读时长大约: 6分钟

导读:用这些简化了 WebSockets 的开源支持工具来控制你的流媒体。

https://linux.cn/article-12347-1.html
作者:Kevin Sonney
译者:Xingyu.Wang

是现在视频直播的主流之一。它是直播流媒体到 Twitch 的首选软件,Twitch 是近来最受欢迎的视频直播网站之一。有一些非常好的附加组件,可以让流媒体人从他们的手机或另一个屏幕上进行控制,而不影响正在运行的视频。事实证明,使用 和 插件来构建自己的控制面板真的很容易。

我的 OBS 控制仪表盘

我知道你们很多人在想什么 —— “他在同一句话中提到了 WebSockets 和简单?”很多人在设置和使用 WebSockets 时遇到了困难,WebSockets 允许通过 Web 服务器的单一连接进行双向通信。Node-RED 内置了对 WebSockets 的支持,是让这一切变得简单的原因之一,至少与编写自己的客户端/服务器相比是如此。

在开始之前,请确保你已经安装和配置了 OBS。首先下载并安装插件。对于本文来说,默认的设置就可以了,但我强烈建议你之后按照说明来保护 obs-websockets 的安全。

接下来,,可以在同一个系统上,也可以在不同的系统上(比如树莓派)。同样,默认的安装对我们这篇文章来说是够了,但最好按照他们网站上的指示进行安全安装。

现在是有趣的部分。启动 Node-RED,打开网页界面(默认在 ),你有了一个空白的画布。打开右边的“汉堡”菜单,选择“管理口味(Manage Palate)”。然后点击“安装”标签,搜索 node-red-contrib-dashboardnode-red-contrib-rbe 模块。

安装好这些模块后,点击右侧列表,将以下模块拖拽到画布上。

1 Websocket Out

1 Websocket In

1 Debug

1 Inject

1 Switch

1 Change

2 JSON

1 Catch

以下列顺序连接它们:

  1. Inject->Button->Change->JSON->Websocket Out

  2. Websocket In->JSON->Switch->RBE->Debug

  3. Catch->Debug

基本流程

当 “Button” 被按下时(或 “Inject” 节点发送一个时间戳),有效载荷通过 “change” 节点发送,从 JSON 对象转换为字符串,然后发送到 “WebSocket Out” 节点。当 “WebSocket In” 节点收到消息后,会将其转换为 JSON 对象,如果不是重复的,则发送到 “Debug” 节点进行输出。而 “Catch” 节点会捕捉到任何错误,并将其放入 “Debug” 面板中。

那有效载荷里有什么呢?让我们设置好一切,一探究竟。

首先,双击 “Button” 打开设置对话框。先使用下拉菜单将有效载荷改为 “JSON”。在该字段中,添加以下内容:

  1. {"request-type":"GetVersion"}

启用 “If msg arrives on input, emulate a button click” 复选框,然后点击 “Done” 关闭 “Button” 配置。当消息从 “Inject” 节点传来时,或者 UI 中的 “Button” 被按下,它将把 JSON 有效载荷发送到下一个节点。

设置 “Button”

现在打开 “Change” 节点。我们要将 msg.payload.message-id 设置为 msg._msgid,方法是将第一个字段从 payload改为 payload.message-id,然后使用第二个字段的下拉菜单将类型从 String 改为 msg.,然后我们将 _msgid 放入该字段。这样就会把唯一的消息 ID 复制到 JSON 对象的有效载荷中,这样每个请求就有一个唯一的 ID 进行跟踪。

然后将其发送到 “JSON” 节点,以便将 JSON 对象转换为字符串,然后传递给 “Websocket Out” 节点。打开 “Websocket Out” 节点,配置到 OBS 的连接。首先,将 Type 更改为 Connect to,然后单击铅笔图标以创建新的连接 URL。将其设置为 ws://OBSMachine:4444/,然后关闭对话框进行保存。OBSMachine 是 OBS 和 obs-websocket 运行的机器名称。例如,如果 Node-RED 运行在同一台机器上,则为 ws://localhost:4444,如果是在名为 luxuria.local 的机器上,则为 ws://luxuria.local:4444。关闭并更新 “Websocket Out” 节点。这将向 OBS 中的 WebSocket 发送有效载荷文本字符串。

“Websocket Out” 节点配置

进入 “WebSocket In” 流程!打开 “WebSocket In” 节点,并对其设置 TypeConnect to 和我们之前定义的连接的 URL(应自动填充)。接下来是第二个 “JSON” 节点,我们可以不用管它。它接受 OBS 的输出,并将其转换为有效载荷对象。

接下来,我们将从中过滤出常规的心跳和状态更新。打开 “Switch”,将 Property 值设置为 payload["update-type"]。现在从它下面的下拉菜单中选择 Is Not Null。点击 + 添加第二个选项,并从下拉菜单中选择 otherwise

“Switch” 节点配置

将 “Switch” 上的新输出直接连接到 “Debug” 节点的输入。

RBE 节点将过滤掉重复的内容,需要告诉它要观察什么字段。由于它应该连接到 “Switch” 的输出,而它只发送状态更新,所以这一点很重要,因为 obs-websocket 每隔几秒钟就会发送更新。默认情况下,RBE 会比较整个有效载荷对象,它将不断变化。打开 RBE 节点,将 Propertypayload 改为 payload.streaming。如果 payloadstreaming值发生了变化,那么就把消息传递过去,否则就丢弃。

最后一步是将 “Debug” 节点的输出从 msg.payload 改为完整的 msg 对象。这使我们能够看到整个对象,有时在 payload 之外还有有用的信息。

现在,单击 “Deploy” 以激活更改。希望 WebSocket 节点下面会有绿色的 Connected 消息。如果它们是红色或黄色的,则连接 URL 可能不正确,需要更新,或者连接被阻止。请确保远程机器上的 4444 端口是开放的、可用的,并且 OBS 正在运行!

如果没有 RBE 节点对 streaming 值的过滤,调试面板(点击画布右侧的“虫子”图标)大约现在就会被心跳消息填满。点击 “Inject” 节点左边的按钮,发送一个模拟按钮点击的信号。如果一切顺利,你应该会看到一个对象到达,它有一个 obs-websocket 可以做的所有事情的列表。

对 “GetVersion” 的回应

现在在另一个标签或窗口中打开 http://localhost:1880/ui。它应该显示一个单一的按钮。按下它! 调试面板应该会显示和之前一样的信息。

恭喜你!你已经发送了你的第一个(希望不是最后一个)WebSocket 消息!

这只是使用 obs-websockets 和 Node-RED 可以做的事情的起步。支持的完整文档记录在 obs-websockets 的 GitHub 仓库的 protocol.md 文件中。通过一点点的实验,你可以创建一个功能齐全的控制面板来启动和停止流媒体、改变场景,以及更多。如果你和我一样,在意识到之前,你就可以设置好各种控件了。

如此多的能力让我有点疯

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
关停三年后,天涯社区今起开放访问:争取6月逐步恢复互动功能

关停三年后,天涯社区今起开放访问:争取6月逐步恢复互动功能

澎湃新闻
2026-06-01 08:02:27
校长怒批成人礼:他们是成人了,不是成婚了!

校长怒批成人礼:他们是成人了,不是成婚了!

复转这些年
2026-05-31 21:08:55
王博下课!主场突然崩盘,33分惨败,孙铭辉难辞其咎,上海冠军点

王博下课!主场突然崩盘,33分惨败,孙铭辉难辞其咎,上海冠军点

烨侃体育
2026-05-31 21:59:44
判了!释永信四罪并罚,资产私生子多,还有3位家喻户晓明星徒弟

判了!释永信四罪并罚,资产私生子多,还有3位家喻户晓明星徒弟

动漫里的童话
2026-05-31 01:11:33
闹笑话了!黄仁勋摊牌:看不上华为韬定律,却被业内专家说不专业

闹笑话了!黄仁勋摊牌:看不上华为韬定律,却被业内专家说不专业

兵鉴史
2026-05-30 14:32:11
巴铁两架中国战机坠毁

巴铁两架中国战机坠毁

烽火观天下
2026-05-31 11:27:42
大爆冷!雷霆3-4马刺耻辱出局,谁是输球罪魁祸首?数据不会说谎

大爆冷!雷霆3-4马刺耻辱出局,谁是输球罪魁祸首?数据不会说谎

篮球扫地僧
2026-05-31 12:11:28
最高预售价200万元尊界搭载国产朝阳轮胎引发热议,余承东称做高端拔高了中国汽车产业能力

最高预售价200万元尊界搭载国产朝阳轮胎引发热议,余承东称做高端拔高了中国汽车产业能力

金融界
2026-05-31 21:56:07
“香会”25年,中美两大主角主导安全对话“音量”

“香会”25年,中美两大主角主导安全对话“音量”

环球网资讯
2026-06-01 06:36:08
4-0!德国队获8连胜,2200万锋霸2射1传后伤退,两大亿元先生破门

4-0!德国队获8连胜,2200万锋霸2射1传后伤退,两大亿元先生破门

我爱英超
2026-06-01 06:00:38
包揽赛季三冠!29岁樊振东独取2分 率队问鼎德甲+队史首次斩3冠王

包揽赛季三冠!29岁樊振东独取2分 率队问鼎德甲+队史首次斩3冠王

风过乡
2026-05-31 22:21:30
张雪机车收获两个第8名,张雪发文反对车手德比斯揽责:“知道短板了就改进,相信下一代赛车更强”

张雪机车收获两个第8名,张雪发文反对车手德比斯揽责:“知道短板了就改进,相信下一代赛车更强”

都市快报橙柿互动
2026-06-01 08:57:58
照片里的张雪峰,一脸疲惫,嘴唇乌黑,但却笑得一脸灿烂

照片里的张雪峰,一脸疲惫,嘴唇乌黑,但却笑得一脸灿烂

岁月有情1314
2026-05-31 17:04:35
中国电动车正以惊人速度贬值

中国电动车正以惊人速度贬值

体坛观察猿
2026-06-01 01:13:10
奚梦瑶婚礼现场图!一双儿女当花童,四太笑的开心,谷爱凌也来了

奚梦瑶婚礼现场图!一双儿女当花童,四太笑的开心,谷爱凌也来了

观察鉴娱
2026-06-01 08:45:29
七年统治梦碎!乌克兰民众亲手选出的总统,终于将国家拖入深渊?

七年统治梦碎!乌克兰民众亲手选出的总统,终于将国家拖入深渊?

阿器谈史
2026-05-29 14:13:01
官网5大专家预测总决赛:3人看好马刺夺冠 文班布伦森争FMVP

官网5大专家预测总决赛:3人看好马刺夺冠 文班布伦森争FMVP

罗说NBA
2026-06-01 06:23:45
亚历山大和主帅公然批评!拿着顶薪打得不如蓝领,球队还当非卖品

亚历山大和主帅公然批评!拿着顶薪打得不如蓝领,球队还当非卖品

你的篮球频道
2026-06-01 08:01:27
想要劝普京收手停止战争?这里要讲一讲“陈家洛悲剧”

想要劝普京收手停止战争?这里要讲一讲“陈家洛悲剧”

黔有虎
2026-05-31 23:33:05
阿斯利姆,遇袭身亡

阿斯利姆,遇袭身亡

极目新闻
2026-05-31 10:30:10
2026-06-01 11:15:00
Linux
Linux
Linux 中国开源社区
8018文章数 73112关注度
往期回顾 全部

科技要闻

关停三年后,天涯社区今起开放访问

头条要闻

牛弹琴:巴黎又乱了火光冲天 马克龙都看得目瞪口呆

头条要闻

牛弹琴:巴黎又乱了火光冲天 马克龙都看得目瞪口呆

体育要闻

哭过之后,文班亚马想给波波维奇打电话

娱乐要闻

张凌赫活动商场玻璃被挤爆5人受伤

财经要闻

网红驱蚊产品,标注化妆品竟含农药成分

汽车要闻

卖车卖到手软 MG4 5月销量突破15000台

态度原创

教育
旅游
游戏
时尚
数码

教育要闻

定了!2026山东高考模拟志愿填报安排发布!

旅游要闻

逛故宫的游客注意了,坤宁宫明起检修请绕行

老外压抑了!《漫威争锋》黑猫新皮肤翘臀变大引热议

女人不管多大年纪,夏天都要准备一条白色阔腿裤,百搭又清爽

数码要闻

基普乔格代言:华为WatchGT Runner 2赛道传奇款开售,2588元

无障碍浏览 进入关怀版