【问题标题】:Video and Audio Chat Protocols/Frameworks视频和音频聊天协议/框架
【发布时间】:2013-06-14 18:56:26
【问题描述】:

我一直在研究如何实现无服务器的点对点视频/音频聊天(即我自己的没有短信的 Skype)。

我一直在寻找实现它的方法,并且我有了下一个想法:

  1. 一个多线程 c++(因为我知道一些 c++)程序获取音频和视频(使用 qt),通过 2 个不同的 UDP 套接字发送它并从另一个“点”从另外 2 个不同的 UDP 套接字读取视频和音频.所以我必须用总共4个线程编写多线程的UDP服务器和客户端:2个用于发送音频和视频,另外2个用于接收音频和视频。

  2. 编写我自己的协议以在同一线程中启用视频和音频,例如解析一半的数据包数据大小以进行音频和视频缓冲,这将使我在应用程序中只有 2 个线程以及更多“容易出错”的代码要编写。

  3. 我一直在寻找一些实时媒体协议,其中一些看起来很有趣。也许研究和实现该协议的接口并使用它们而不是“创建”我自己的。

现在,实际问题:

  1. 是否有一些关于如何完成此操作的文档?也许正在使用一些“最先进的”api/协议或针对此问题的良好实施/适合的解决方案?

  2. 如果我选择实现与视频分离的音频,VoIP 是否是音频连接的可能解决方案?

  3. Qt 是用于此目的的好工具吗?我以前从未使用过 Qt,对于视频和音频接口,我也考虑过 openframeworks,所以我想知道是否有人曾经使用过其中一个框架,以及这是否是正确的选择。

我知道我的问题没有代码并且可能的答案范围很广,但我真的需要一些帮助。

谢谢。

【问题讨论】:

  • 我是qt新手。您是否在 qt 框架中获得了正确的音频和视频聊天解决方案?我有同样的要求。我尝试用谷歌搜索,但没有得到任何 c++ 库。

标签: qt networking udp protocols


【解决方案1】:

首先,您应该回答以下问题:您的客户端应该如何在没有服务器部分的情况下进行连接/授权?

注意:1) Skype 有服务器。 2) 很多互联网用户通过 NAT / Proxy 访问网络。

Ofc,您可以尝试实施一些学习建议,但如果您想创建一些有用的东西 - 尝试由专家创建的第三方解决方案。例如:google libjingle。

【讨论】:

  • 仅供学习之用。我知道 Skype 有服务器,如果我想公开它,我的应用程序也应该有它们,但是,至少现在,我只想知道为此目的我需要学习的技术。关于libjingle,似乎是一个很好的框架,我不知道。非常感谢。非常感谢您的洞察力。是我第一次在这里开始赏金只是为了得到一些关注。可以用另一种方式做,但我讨厌重复:)
  • 无法在一页上回答您的问题。创建这样的东西 - 是书籍的主题,需要深入了解网络/洪流拓扑。你可以开始研究 libjingle 的源代码和文档。
【解决方案2】:

您需要 VOIP 库的 :)

无需从头开始,您可以使用库的开源,例如:opalvoip

【讨论】:

  • 您能否建议 opalvoip 的集成文档,因为他们的网站已暂停?提前致谢。