【问题标题】:TCP-Streaming: Audio/Video SynchronizationTCP-Streaming:音频/视频同步
【发布时间】:2012-07-11 14:25:11
【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: java tcp network-programming synchronization streaming


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2012-12-16
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 2012-10-02
      相关资源
      最近更新 更多