Что касается потоковой передачи, как работает такая программа, как Skype? - PullRequest
9 голосов
/ 08 октября 2009

Когда такие программы, как Skype, передают видео от пользователя к другому и наоборот, как это обычно достигается?

Передает ли клиент A поток на сервер, а сервер отправляет его клиенту B?

или он идет напрямую от клиента A к B?

Не стесняйтесь поправлять меня, если я далеко, и ни один из них не является правильным.

Ответы [ 2 ]

6 голосов
/ 08 октября 2009

Skype намного сложнее, потому что это Peer to Peer, что означает, что ваш поток может проходить через несколько других клиентов Skype, выступая в роли нескольких серверов. Скайп не имеет огромной центральной системы для этого. Skype всегда отслеживает несколько мест, в которые он может доставить ваш поток, поэтому, если одно из этих мест исчезнет (этот клиент Skype исчезнет), он продолжит отправку через другой сервер / клиент Skype. Это сделано настолько эффективно, что вы не замечаете прерывания.

5 голосов
/ 08 октября 2009

По сути, так оно и было достигнуто.

1) кодируйте видео / аудио, используя лучшее сжатие, которое вы можете получить. Сжатие с потерями и много псевдонимов, чтобы выбрасывать части видео и аудио, которые не могут быть использованы. Как удалить фон шипение

2) упаковывать видео / аудио в пакеты и ставить на них временную метку. Пакеты обычно являются датаграммами.

3) отправлять пакеты напрямую по назначению. Используйте наиболее подходящий маршрут. Вам не нужно отправлять все пакеты одинаково. Используйте много маршрутов, если это возможно. P2P-сети часто используют много маршрутов к одному и тому же пункту назначения

4) перекодировать на месте назначения. Если пакет слишком старый, выбросьте его. Если пакеты потеряны, не беспокойтесь об этом, так как уже слишком поздно.

5) присоединиться к видео и заполнить пропущенные кадры как можно лучше.

...