TCP流:音频/视频同步

时间:2012-07-11 21:16:22

标签: java tcp network-programming synchronization streaming

我有一个关于TCP /实时流/同步(编程语言:Java)的问题:

假设我有一个客户端,即从相机捕获音频和视频。它通过TCP套接字同时(通过线程)将音频和视频数据发送到服务器,该服务器在两个不同的线程上同时接收音频和视频流。

[我知道,UDP通常用于直播应用程序,但有原因,为什么我使用TCP ..]

所以,问题是:是否有机会通过TCP进行同步?不同套接字上有两个流(一个用于音频,一个用于视频),可能存在一个问题,即必须重新发送数据包,但丢失数据包的重发是一个问题(我的意思是,当通过TCP重新发送数据包,这会导致永久性延迟,还是客户端只会在几毫秒内更快地发送丢失的数据包和下一个数据包?)

我正在同时向服务器发送音频和视频信号。他们总是会在服务器上同时到达吗?如果没有,有没有办法产生/模拟问题?

我做了一些测试,音频和视频始终保持同步。但我不确定,如果它总是那样(即使经过超过5小时的流媒体播放)。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您使用两个不同的插座,则无法保证。 TCP以正确的顺序保证数据传输,但如果您为音频和视频使用两个不同的流,则不适用。

但是,如果连接足够快,则应该没有问题。它尽可能快地发送它。如果一个流被“阻塞”,它会延迟并失去同步,但我怀疑你的情况会发生发送视频(只要它不是太高的FPS或分辨率)。

我认为使用单一流更安全,但我认为诚实地说你的方式很好。这一切都取决于:客户端的速度,服务器的速度和网络的速度。