TCP против UDP в видеопотоке

Я только что вернулся домой с экзамена по сетевому программированию, и один из вопросов, который они нам задали, был " Если вы собираетесь транслировать видео, вы используете TCP или UDP? Дайте объяснение как для сохраненного видео, так и для потокового видео в реальном времени ». На этот вопрос они просто ожидали короткого ответа TCP для сохраненного видео и UDP для видео в реальном времени, но я подумал об этом по дороге домой, и так ли это? обязательно лучше использовать UDP для потоковой передачи видео в реальном времени? Я имею в виду, если у вас есть пропускная способность для этого и вы транслируете футбольный матч или концерт, если на то пошло, действительно ли вам нужно использовать UDP?

Допустим, пока вы транслируете этот концерт или что-то еще, используя TCP, вы начинаете терять пакеты (что-то плохое произошло в какой-то сети между вами и отправителем), и в течение целой минуты вы не получаете никаких пакетов. Видеопоток будет приостановлен, а после через минуту пакеты снова начинают проходить (IP нашел для вас новый маршрут). Тогда произойдет то, что TCP будет ретранслировать ту минуту, которую вы потеряли, и продолжит отправлять вам прямой эфир. Предполагается, что полоса пропускания выше, чем скорость передачи в потоке, и пинг не слишком высок, поэтому за короткий промежуток времени одна потерянная минута будет действовать для вас как буфер для потока, таким образом , если потеря пакетов произойдет снова, вы не заметите.

Теперь я могу вспомнить некоторые устройства, для которых это было бы не лучшим решением, например, видеоконференции, где вам понадобится ], чтобы всегда быть в конце трансляции, потому что задержка во время видеочата просто ужасна, но во время футбольного матча или концерта какая разница, если вы отстаете от трансляции на одну минуту? Кроме того, вы гарантированно получите все данные, и было бы лучше сохранить их для последующего просмотра, когда они » входит без ошибок.

Итак, это подводит меня к моему вопросу. Есть ли какие-либо недостатки, о которых я не знаю, в использовании TCP для потоковой передачи в реальном времени? Или действительно должно быть так, что если у вас есть пропускная способность для этого, вам следует перейти на TCP, учитывая, что он «лучше» для сети (управление потоком)?

87
задан Eddie Parker 29 May 2015 в 06:28
поделиться