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