2012-07-11 171 views
0

我有一个关于TCP /即时串流/同步问题(编程语言:JAVA):TCP-流:音频/视频同步

比方说,我有一个客户,是从一个捕捉音频和视频相机。它通过TCP-sockets同时发送音频和视频数据(通过线程)到服务器,即在两个不同的线程上同时接收音频和视频流。

[我知道,UDP通常用于实时的流媒体应用,但也有原因,为什么我使用的是TCP ..]

所以,问题是:是否有任何机会,以摆脱通过TCP同步吗?在不同的套接字上有两个流(一个用于音频,一个用于视频),可能有问题,即一个数据包必须重新发送,但丢失数据包的重新发送会成为问题(我的意思是,通过TCP重新发送数据包,这是否会造成永久性延迟,或者客户端是否会在几毫秒内更快地发送丢失的数据包和下一个数据包)?

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

我已经做了一些测试,音频和视频始终保持同步。但我不确定,如果它永远如此(甚至在流式传输超过5小时后)。

谢谢。

回答

0

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

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

我认为使用一个单一的流会更安全,但我认为你的方式没问题。这完全取决于:客户端的速度,服务器的速度以及网络的速度。