音频+视频通过TCP / IP

时间:2016-09-04 14:02:30

标签: sockets audio tcp

我正在使应用程序类似于skype与另一台计算机进行交互,我有几个问题。

我知道所有基础知识,例如如何通过tcp等以图像和音频的形式发送数据。

  1. skype等应用程序如何发送实时音频?它是否逐字记录1个字节的音频,发送并播放它然后重复该过程?对我来说,它不是即时的,所以我不明白这是怎么可能的。

  2. 你如何同时通过tcp发送字符串和图像(视频通话+聊天),你会使用多个端口吗?我可以看到这将是非常糟糕的。我正在做atm的方式就是当我点击回放图像时,我将其设置为接收图像以便正确接收,如果此时发送了一个字符串,它将无法工作,因为它无法转换为图像如果你看到我说的话。我不知道我会怎么做。我可以发送每个东西以它的类型作为开头例如"字符串你好,你好吗"然后通过它来解密数据类型,但这看起来很乏味而且很慢。

  3. 如果有人能给我一个见解,那就太棒了

1 个答案:

答案 0 :(得分:1)

我无法说出skype是如何做到的,但这应该是一个起点:

  • 流式音频/视频通常通过UDP套接字传输,而不是TCP。 TCP保证交付,而UDP是最好的努力。如果您有临时连接丢失,您更关心的是您收到的视频是最新的,而不是您收到整个视频流。
  • 在从相机/麦克风接收数据后,通常使用标准压缩算法压缩(有时加密)数据。看看H264,它通常用于压缩视频。
  • RTP通常用于传输音频/视频。它允许在单个套接字上组合多种类型的流。
  • 控制流量通常通过不同的套接字(通常是TCP)单独发送。例如,用于VoIP电话的SIP通过TCP或UDP端口(通常为5060)启动控制连接。然后两端协商将支持哪种类型的流,以及如何发送这些流。对于SIP,这将是一个RTP流,它在不同的UDP端口上设置。