0

我有一个关于 TCP/Live-Streaming/Synchronization(编程语言:Java)的问题:

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

[我知道,UDP 通常用于直播应用程序,但有一些原因,我使用 TCP 的原因..]

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

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

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

谢谢你。

4

1 回答 1

0

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

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

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

于 2012-07-12T00:16:51.727 回答