如何用 OBS 和 WebSockets 播放视频流


如何用 OBS 和 WebSockets 播放视频流

文章插图
 
用这些简化了 WebSockets 的开源支持工具来控制你的流媒体 。
  • 来源:https://linux.cn/article-12347-1.html
  • 作者:Kevin Sonney
  • 译者:Xingyu.Wang
(本文字数:4340,阅读时长大约:6 分钟)
OBS 是现在视频直播的主流之一 。它是直播流媒体到 Twitch 的首选软件,Twitch 是近来最受欢迎的视频直播网站之一 。有一些非常好的附加组件,可以让流媒体人从他们的手机或另一个屏幕上进行控制,而不影响正在运行的视频 。事实证明,使用 Node-RED 和 obs-websockets 插件来构建自己的控制面板真的很容易 。
如何用 OBS 和 WebSockets 播放视频流

文章插图
我的 OBS 控制仪表盘
我知道你们很多人在想什么 —— “他在同一句话中提到了 WebSockets 和简单?”很多人在设置和使用 WebSockets 时遇到了困难,WebSockets 允许通过 Web 服务器的单一连接进行双向通信 。Node-RED 内置了对 WebSockets 的支持,是让这一切变得简单的原因之一,至少与编写自己的客户端/服务器相比是如此 。
在开始之前,请确保你已经安装和配置了 OBS 。首先下载并安装 最新稳定版的 obs-websockets 插件 。对于本文来说,默认的设置就可以了,但我强烈建议你之后按照说明来保护 obs-websockets 的安全 。
接下来, 下载并安装 Node-RED ,可以在同一个系统上,也可以在不同的系统上(比如树莓派) 。同样,默认的安装对我们这篇文章来说是够了,但最好按照他们网站上的指示进行安全安装 。
现在是有趣的部分 。启动 Node-RED,打开网页界面(默认在 http://localhost:1880 ),你有了一个空白的画布 。打开右边的“汉堡”菜单,选择“ 管理口味(Manage Palate)” 。然后点击“安装”标签,搜索 node-red-contrib-dashboard 和 node-red-contrib-rbe 模块 。
安装好这些模块后,点击右侧列表,将以下模块拖拽到画布上 。
  • 1 Websocket Out
  • 1 Websocket In
  • 1 Debug
  • 1 Inject
  • 1 Switch
  • 1 Change
  • 2 JSON
  • 1 Catch
以下列顺序连接它们:
Inject->Button->Change->JSON->Websocket OutWebsocket In->JSON->Switch->RBE->DebugCatch->Debug
如何用 OBS 和 WebSockets 播放视频流

文章插图
基本流程
当 “Button” 被按下时(或 “Inject” 节点发送一个时间戳),有效载荷通过 “change” 节点发送,从 JSON 对象转换为字符串,然后发送到 “WebSocket Out” 节点 。当 “WebSocket In” 节点收到消息后,会将其转换为 JSON 对象,如果不是重复的,则发送到 “Debug” 节点进行输出 。而 “Catch” 节点会捕捉到任何错误,并将其放入 “Debug” 面板中 。
【如何用 OBS 和 WebSockets 播放视频流】那有效载荷里有什么呢?让我们设置好一切,一探究竟 。
首先,双击 “Button” 打开设置对话框 。先使用下拉菜单将有效载荷改为 “JSON” 。在该字段中,添加以下内容:
{"request-type":"GetVersion"}启用 “If msg arrives on input, emulate a button click” 复选框,然后点击 “Done” 关闭 “Button” 配置 。当消息从 “Inject” 节点传来时,或者 UI 中的 “Button” 被按下,它将把 JSON 有效载荷发送到下一个节点 。
如何用 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 发送有效载荷文本字符串 。


推荐阅读