【发布时间】:2020-10-08 04:08:33
【问题描述】:
我正在尝试使用 kubernetes 集群对来自多个 ip 摄像机的视频流进行按需实时转码,并通过 websocket 发送到网站。
我修改了一个我在网上找到的用 go 编写的项目,它接受一个带有 rtsp 提要 URL 有效负载的 Web 请求,然后它使用该 url 启动一个 FFMPEG 进程来访问流并将其转码为 MPEG 和将 mpeg 数据发送到 go 应用程序上的另一个端点,该端点启动 websocket 连接。当可以访问流时,对原始请求的响应包括一个 websocket url。哪个网址可以放入 mpeg js 播放器并通过 websocket 在浏览器中查看。主要优点是多个客户端可以查看流,而只有一个流来自摄像头,这减少了移动数据。我还要补充一点,FFMPEG 会在 60 秒后自动停止,请求未设置为端点。
我找不到解决方案的问题是,如何在 kubernetes 集群中扩展上述应用程序,所以当我请求进入时,它会执行以下操作。
-> 检查是否有人已经在观看流
----> 如果有人正在查看,则意味着已经创建了 pod 和 websocket 连接。因此,只需将指向 pod 的 url 发送回客户端即可。
----> 如果没有人在查看,则需要创建一个流/websocket pod,并在创建后将一个 url 发送回客户端以访问流。
我看过入口控制器可能动态更新入口资源是一种解决方案,甚至可能使用服务网格,但这些对我来说都是新的。
如果有人有任何意见可以给我一些指导,我将不胜感激。
非常感谢 卢克
【问题讨论】:
标签: go kubernetes websocket video-streaming kubernetes-ingress