Java TCP流:音频/视频同步

Java TCP流:音频/视频同步,java,tcp,network-programming,synchronization,streaming,Java,Tcp,Network Programming,Synchronization,Streaming,我有一个关于TCP/实时流媒体/同步(编程语言:Java)的问题: 假设我有一个客户机,它从一个摄像头捕获音频和视频。它通过TCP套接字将音频和视频数据同时(通过线程)发送到服务器,服务器在两个不同的线程上同时接收音频和视频流 [我知道,UDP通常用于实时流媒体应用程序,但我使用TCP是有原因的..] 所以,问题是:是否有机会通过TCP失去同步?在不同的套接字上有两个流(一个用于音频,一个用于视频),可能有问题,必须重新发送数据包,但是重新发送丢失的数据包会有问题吗(我的意思是,当通过TCP重新

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

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

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

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

我正在将音频和视频信号同时发送到服务器。它们是否总是在同一时间到达服务器?如果不是,是否有办法产生/模拟问题

我做了一些测试,音频和视频总是同步的。但我不确定,它是否总是这样(即使在流媒体播放超过5小时之后)


谢谢。

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

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

我认为使用单个流会更安全,但老实说,我认为您的方式很好,这取决于:客户端的速度、服务器的速度和网络的速度