TCP против UDP в видео потоке - PullRequest
83 голосов
/ 31 мая 2011

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

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

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

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

Ответы [ 13 ]

1 голос
/ 19 марта 2014

При чтении дебатов по TCP UDP я заметил логический недостаток.Потеря пакета TCP, вызывающая задержку в одну минуту, которая преобразуется в буфер продолжительностью в одну минуту, не может быть соотнесена с отбрасыванием UDP в течение полной минуты при такой же потере.Более справедливое сравнение выглядит следующим образом.

TCP испытывает потерю пакета.Видео останавливается, пока TCP повторно отправляет пакеты, пытаясь передать математически совершенные пакеты.Видео задерживается на одну минуту и ​​начинает с того места, на котором оно остановилось, после того, как пропущенный пакет достиг цели.Мы все ждем, но мы знаем, что не пропустим ни одного пикселя.

UDP испытывает потерю пакета.На секунду во время видеопотока угол экрана становится немного размытым.Никто не замечает, и шоу продолжается без поиска потерянных пакетов.

Все, что потоковое, получает наибольшую выгоду от UDP.Потеря пакета, вызывающая задержку TCP в одну минуту, не приведет к задержке UDP в одну минуту.Учитывая, что в большинстве систем используются потоки с множественным разрешением, что приводит к блокировке при голодании пакетов, имеет смысл использовать UDP.

UDP FTW при потоковой передаче.

1 голос
/ 31 мая 2011

Для пропускной способности видео, скорее всего, ограничение системы.Используя многоадресную рассылку, вы можете значительно уменьшить используемую пропускную способность восходящего канала.С помощью UDP вы можете легко передавать свои пакеты всем подключенным терминалам.Вы также можете использовать надежный протокол многоадресной передачи, один из которых называется Pragmatic General Multicast (PGM), я ничего о нем не знаю и полагаю, что он не получил широкого распространения.

0 голосов
/ 19 июня 2016

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

...