0

我有这个 AutobahnPython 服务器启动并运行良好。 https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/streaming/streaming_server.py

我想附加一个 HTML5 前端来捕获网络摄像头视频和音频。如何让 HTML5 Blob 通过我刚刚在 HTML5 中创建的套接字发送到我也在运行的 python 套接字服务器?

是发送消息吗? https://autobahnpython.readthedocs.org/en/latest/websocketbase.html#autobahn.websocket.WebSocketProtocol.sendMessage

4

1 回答 1

2

做好准备,做你想做的事,并把它做好(这意味着流程控制),是一个高级主题。我试着给你一些提示。您可能也有兴趣阅读本文

  1. WebSocketProtocol.sendMessage是 AutobahnPython API 的一部分。准确地说,它是基于消息的基本 API的一部分。上面的流服务器使用高级API接收,它使用基本API来发送(因为发送的数据很小,不需要流量控制)

  2. 现在,就您而言,网络摄像头是“海量数据”生产者。您将需要对从 JS到服务器的发送进行流控制。因为如果你从 JS 发送 WebSocket 消息的速度与从 cam 获取数据的速度一样快,你的上游连接可能跟不上,浏览器的内存就会耗尽。了解bufferedAmount哪个是 JS WebSocket API 的一部分。

  3. 如果您只想消费数据是否流入您的服务器,上面的 AutobahnPython 流式服务器示例是一个很好的起点,因为:您可以处理传入的 WebSocket数据其他 WebSocket 框架将首先缓冲完整的消息,直到它们将消息提供给您。

  4. 如果您想再次将服务器接收到的数据重新分配给其他连接的客户端,您还需要在服务器的传出分支上进行流量控制。然后你还需要高级 API发送。请参阅参考或流式传输(生产者)客户端示例 - 您可以调整代码以在服务器内运行。

现在,如果最重要的是对您没有意义..这是一件不平凡的事情。尝试阅读 Autobahn 论坛的第一个链接,以及有关流量控制的更多信息。这也很重要,因为 JS WebSocket API 只有有限的机制来执行这种流控制,而不会退回到在应用程序级别发明自己的方案。出色地。无论如何,希望这会有所帮助。

于 2013-11-12T23:24:29.163 回答