我刚从网络编程考试回来,他们问我们的问题之一就是 “如果你要流视频,你会使用 TCP 还是 UDP?对存储的视频和实时视频流进行解释。对于这个问题,他们只是期待一个简短的答案 TCP 为存储视频和 UDP 为直播视频,但我想了这一点在我回家的路上,是否一定更好地使用 UDP 为流直播视频?我的意思是,如果你有足够的带宽,并且说你正在播放一场足球比赛或者音乐会,你真的需要使用 UDP 吗?
让我们假设当你在用 TCP 传输这场演唱会或者其他任何东西的时候,你开始丢失数据包(在你和发送者之间的某个网络中发生了一些不好的事情) ,整整一分钟你没有得到任何数据包。视频流将暂停,一分钟过去后,数据包开始再次通过(IP 为您找到了一个新的路由)。接下来会发生的情况是,TCP 会在您丢失的那一分钟重新传输,并继续向您发送实时流。作为一个假设,带宽高于流上的比特率,并且 ping 不是太高,所以在很短的时间内,你丢失的一分钟将充当流的缓冲区,这样,如果数据包丢失再次发生,你不会注意到。
现在,我可以想到一些设备,这将不是一个好主意,例如视频会议,你 需要总是在流的最后,因为延迟在视频聊天是可怕的,但在足球比赛,或音乐会,如果你是一分钟后,流有什么关系呢?另外,您可以保证您得到所有的数据,并且最好保存起来以便以后查看,当它进来时没有任何错误。
这就引出了我的问题。使用 TCP 进行直播有什么我不知道的缺点吗?或者真的应该这样,如果你有它的带宽,你应该去 TCP,因为它是“更好”的网络(流控制) ?