【发布时间】:2017-09-30 02:03:32
【问题描述】:
如何删除 WebRTC 并将 ZeroMQ 添加到我的 Android 应用程序?
我是否应该颠倒添加 WebRTC 的步骤,然后添加 ZeroMQ 功能? 还是有不同的方法?
【问题讨论】:
-
这是不可能在摘要中回答的。 ZeroMQ 做的事情与 WebRTC 不同。
如何删除 WebRTC 并将 ZeroMQ 添加到我的 Android 应用程序?
我是否应该颠倒添加 WebRTC 的步骤,然后添加 ZeroMQ 功能? 还是有不同的方法?
【问题讨论】:
嗯,嗯,WebRTC 是建立在 RTP 之上的协议,旨在用于无保证地交付时间关键数据(视频帧、音频等),也不保证交付顺序。
相比之下,ZMQ 是一个面向消息的 Actor Model 框架,具有有用的设计模式、保证交付(假设网络保持正常运行),并且非常适合需要发送消息的应用程序。
它们完全不同。我是否正确地假设您已经开始使用 WebRTC(可能是由于熟悉)并且遇到了任何基于 UDP 的协议(这是 RTP 使用的)固有的限制?
如果您要使用 ZMQ,则必须在您希望使用它的每条通信路径的两端都使用它。例如,您不能让 Android 应用程序上的 ZMQ 与 WebRTC 服务器通信。 ZMQ 只与 ZMQ 对话,仅此而已。
好消息是 WebRTC (RTP) 是相似的。因此,如果您已经在使用 WebRTC,那可能意味着您可以控制所有软件。这意味着您可以将其更改为使用 ZMQ。 [替代方案,例如WebRTC 链接的另一端是一些无法更改的服务器系统,会阻止您将 Android 应用程序更改为 ZMQ。]
至于用 ZMQ 替换 WebRTC,这在很大程度上取决于您要发送的内容。从根本上说,ZMQ 处理消息。消息是一个字节数组。在单个发送/接收操作中,消息的字节作为一个块从发送方传输到接收方。如果这不合适(例如,您的视频流在视频的逻辑块之间没有明显的分界线),那么您可能会遇到问题。
人们通常使用 Google Protocol Buffers 之类的东西来定义消息类,然后将这些类序列化为字节数组,并在消息中发送这些类。接收端在解串器处传递接收到的字节数组,按原样重构类。
祝你好运
【讨论】: