本文主要向您展示如何使用OBS和WebSockets播放视频流。内容简单易懂,条理清晰,希望能帮你解开疑惑。让边肖带领大家学习《如何用光突发交换和网络套接字播放视频流》一文。
OBS是视频直播的主流之一。最近最热门的直播视频网站之一的Twitch,是直播流媒体的首选。有一些优秀的附加组件,允许流媒体人从他们的手机或另一个屏幕控制,而不影响运行的视频。事实上,使用Node-RED和obs-websockets插件构建自己的控制面板真的很容易。
我的OBS控制仪表板。
我知道你们很多人在想什么。mdash"他在同一句话中提到了网络套接字和简单性?"许多人在设置和使用网络套接字时遇到困难,网络套接字允许通过网络服务器的单个连接进行双向通信。Node-RED内置了对WebSockets的支持,这也是它容易的原因之一,至少与编写自己的客户机/服务器相比是如此。
开始之前,请确保您已经安装并配置了OBS。首先,下载并安装最新稳定版本的obs-websockets插件。就本文而言,默认设置是可以的,但是我强烈建议您按照说明来保护obs-websockets的安全。
接下来,下载并安装Node-RED,可以在同一个系统上,也可以在不同的系统上(比如树莓Pi)。同样,默认安装对于我们的文章来说已经足够了,但是最好按照他们网站上的说明安全安装。
有趣的是。启动Node-RED,打开web界面(默认为http://localhost:1880),你有一个空白画布。打开右侧的“汉堡”菜单,选择“管理口味管理口感”。然后单击“安装”选项卡,搜索node-red-contrib-dashboard和node-red-contrib-rbe模块。
安装完这些模块后,单击右侧的列表,并将以下模块拖到画布上。
1个网络插座输出
1个网络插座输入
1调试
1注射
1开关
1变更
2 JSON
1抓
按照以下顺序连接它们:
注入-按钮-更改-JSON-WebSocketoutWebSocketin-JSON-开关-RBE-调试批次-调试
基本过程
当按下“按钮”(或“注入”节点发送时间戳)时,有效载荷通过“更改”节点发送,从JSON对象转换为字符串,然后发送到“WebSocket Out”节点。当“WebSocket In”节点收到消息后,会转换成JSON对象,如果不是重复的,会发送到“Debug”节点进行输出。“捕获”节点捕获任何错误,并将其放入“调试”面板。
有效载荷里有什么?让我们把一切都安排好,然后找出答案。
首先,双击按钮打开设置对话框。使用下拉菜单将有效负载更改为“JSON”。在此字段中,添加以下内容:
{ ' request-type ' : ' get version ' }启用“如果输入消息到达,模拟按钮单击”复选框,然后单击“完成”关闭“按钮”配置。当消息来自“注入”节点时,或者当用户界面中的“按钮”被按下时,它会将JSON有效载荷发送到下一个节点。
g src="https://cache.yisu.com/upload/information/20210521/375/497403.jpg" alt="怎么用OBS和WebSockets播放视频流">
设置 “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” 节点,并对其设置 Type
为 Connect to
和我们之前定义的连接的 URL(应自动填充)。接下来是第二个 “JSON” 节点,我们可以不用管它。它接受 OBS 的输出,并将其转换为有效载荷对象。
接下来,我们将从中过滤出常规的心跳和状态更新。打开 “Switch”,将 Property
值设置为 payload["update-type"]
。现在从它下面的下拉菜单中选择 Is Not Null
。点击 +
添加第二个选项,并从下拉菜单中选择 otherwise
。
“Switch” 节点配置
将 “Switch” 上的新输出直接连接到 “Debug” 节点的输入。
RBE 节点将过滤掉重复的内容,需要告诉它要观察什么字段。由于它应该连接到 “Switch” 的输出,而它只发送状态更新,所以这一点很重要,因为 obs-websocket 每隔几秒钟就会发送更新。默认情况下,RBE 会比较整个有效载荷对象,它将不断变化。打开 RBE 节点,将 Property
从 payload
改为 payload.streaming
。如果 payload
的 streaming
值发生了变化,那么就把消息传递过去,否则就丢弃。
最后一步是将 “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
文件中。通过一点点的实验,你可以创建一个功能齐全的控制面板来启动和停止流媒体、改变场景,以及更多。如果你和我一样,在意识到之前,你就可以设置好各种控件了。
以上是“怎么用OBS和WebSockets播放视频流”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50273.html