视频是一帧一帧拼接起来的,比如1G视频传输时肯定要被切割一个个网络包,传输到对端再拼接起来。如果少些包丢了,是不影响整体观看的。大家很大可能遇到过音频和视频失真或卡顿的现象,很苦恼,这是什么原因造成的?今天要找到答案了。
音频和视频数据必须在规定的时间内送达,一旦送达晚了,就会错过播放时机,导致声音和图像卡顿。如果像TCP一样通过接收确认响应来检查错误并重发,重发的过程需要消耗一定的时间,因此重发的数据很可能已经错过了播放的时机。一旦错过播放时机,重发数据也是没有用的,因为声音和图像已经卡顿了,这是无法挽回的。当然,我们可以用高速线路让重发的数据能够在规定的时间内送达,但这样一来可能要增加几倍的带宽才行。
UDP经常会被防火墙阻止,因此当需要穿越防火墙传输音频和视频数据时,尽管需要消耗额外的带宽,但有时候也只能使用TCP。
此外,音频和视频数据中缺少了某些包并不会产生严重的问题,只是会产生一些失真或者卡顿而已,一般都是可以接受的。
在这些无需重发数据,或者是重发了也没什么意义的情况下,使用UDP发送数据的效率会更高。
本文摘取自周自恒翻译的户根勤编写的《网络是怎样连接的》