Почему лагает Twitch
Twitch.tv — это сервис на котором игроки в компьютерные игры транслируют свой геймплей для всех желающих. Это такой ютуб, только в реальном времени. Это как телевизор. Только для компьютерных игр. Очень популярный, легендарный сервис.
Но превосходными стримами любимых игроков не получится насладиться, если стрим лагает.
Почему? Что не так? Разве моих воображаемых 50 Mbit не достаточно? В чём дело?!
В этой статье я попытаюсь ответить на подобные вопросы, которые задаёт себе каждый зритель, имеющий неудачу столкнуться с лагами.
Рассказ может оказаться слишком техническим и сложным, если вам что-то не понятно - пожалуйста не стесняйтесь и задайте свои вопросы в комментариях!
Теория
Твич позволяет стримерам вещать с потоком грубо говоря не более 5 Мбит. Значит если у вас интернет 5 и более Mbit, вы не будете испытывать затруднений по этому пункту. Но даже если пропускная способность вашего интернета меньше — не отчаивайтесь, твич поддерживает опции качества.
Когда стримера смотрят больше +-50 человек, Твич начинает пережимать видео поток в потоки меньшего качества. У зрителей появляются опции выбора качества стрима.
Почему Твич ведёт себя именно так? Дело в том, что он пытается экономить ресурсы. По умолчанию сервису твича нужно просто переслать поток данных от стримера зрителям. Это относительно просто. А вот сжимать этот же поток в реальном времени в потоки разного качества - это огромная дополнительная нагрузка. Поэтому если стример не популярный, Твич не будет тратить на него свои ресурсы по пережатию его канала.
Нужно понимать, что пережатие выполняется не совсем моментально, поэтому видео потоки с не-Source (англ. Источник)
качеством могут отставать от оригинального потока по времени на 10-30 секунд. Те, кто смотрят в оригинале всегда видят события первыми.
Итак, Твич пережимает оригинальный поток, который у стримеров обычно плавает от 1-3 Мбит до 4.5 Мбит (эквивалентно 1000-3000 Кбит до 4500 Кбит)
. И пережатый поток становится меньше. Вот какие цифры вы можете увидеть на обычном стриме:
- Source 2800 Kb/s
- High 1400 Kb/s
- Medium 700 Kb/s
- Low 500 Kb/s
- Mobile 200 Kb/s
Так что смотреть стримы вы можете на интернете практически любой ширины канала.
Но стрим всё равно лагает!?
Да, пропускная способность — это не единственный параметр интернета. В следующую очередь давайте посмотрим на стабильность интернета, на пинги.
Мы нажмём правой кнопкой на стрим, кликнем там на пункт меню Video Playback Stats
. Увидим подробную статистику. Скорее всего на каждый ваш лаг вы увидите красную полоску в графе Buffer Size
. Т.е. стрим не успевает стабильно прогружаться.
С этой информацией уже можно обращаться в техподдержку вашего провайдера, если это не монополист в маленьком городке, то как минимум их начальство заинтересовано в том, чтобы провайдер предоставлял максимально качественный сервис.
Практика
- Лагать может из-за узкого канала
- Лагать может из-за нестабильного интернета
- Лагать может из-за нестабильного сетевого оборудования
(перезагрузите роутер, компьютер, модем, свитч)
- Лагать может из-за загруженного процессора
(чем выше качество, тем больше процессора требуется, чтобы воспроизвести стрим)
- Лагать может у конкретного стримера, проверьте на других стримах
- Причину лагов видно в окне статистики
Video Playback Stats
- Для не-Source качества возможны более длинные буферы, поэтому даже при плохом интернете любое не-Source качество имеет хорошие шансы на то, чтобы не лагать
Если у вас остались вопросы, опишите свою конкретную ситуацию в комментариях и я непременно вам помогу. Я хочу, чтобы каждый житель России мог наслаждаться качественным потоковым видео.
Обсуждение
Фиксированный IP-адрес нужен для твич трансляции ?
Здравствуйте, MrZet.
По имеющейся у меня информации, нет, не нужен.
Какая там кнопка правая и меню? Куда нажимать? Что вообще такое?
«Мы нажмём правой кнопкой на стрим, кликнем там на пункт меню Video Playback Stats. Увидим подробную статистику. Скорее всего на каждый ваш лаг вы увидите красную полоску в графе Buffer Size. Т.е. стрим не успевает стабильно прогружаться.» Как это исполнить? Ору. Правой кнопкой по стриму? По плееру, где видео отображается ? Что, куда, кого? У меня слов нет. Нет ни пункта меню, ни пункта «Video Playback Stats». Мои глаза.
Здравствуйте, Benja. Не паникуйте, всё будет хорошо.
С тех пор, как была написана статья, Twitch изменили технологию проигрывания с Flash-плеера на HTML5 плеер. Поэтому теперь действительно если кликнуть правой кнопкой мыши по экрану стрима, ничего кроме стандартного меню браузера не появится. Во флере появлялось.
Теперь подобная опция находится справа-снизу в стриме, Шестерёнка Settings -> Advanced -> Show Video Stats.
Там нет такого удобного графика, видимо его было слишком сложно рисовать с помощью HTML5+JS. Но в общем, панель статистики всё ещё информативная.
SpeedTest выдает 90 Мбит на местном, 30+ на ЕУ (Франкфурт) и 20~ Америка (Нью Йорк).
Лагает твич даже после того, как я переустановил винду. Да у меня старое железо, ему лет 6 минимум, но раньше НЕ ЛА-ГА-ЛО. Что случилось, куда, зачем? Я вообще не понимаю. Лагает именно на 1080 и 760 \ 60 фпс. Причем как лагает, подвиснет , прогрузится (кружочек повертится) и дальше пойдет. Бывает слайды попрут, но редко. Чаще с прогрузкой как будто. То ли реально с интернетом что-то, хотя скорость более менее хорошая, как я понимаю даже очень, я что-то в интернете не понимаю?
Пробовал блокировать диапазоны IP америки, чтобы твич не кидал на американские сервы, в одном способе увидел, не помогло. 1080 дергает, 720 иногда прокручивает прогруз, вот как похоже.
ЦП 20-40% на 1080. ОЗУ 1.5 Гб, из 2 Гб. Дергает и слайдит.
Попробую сделать файл подкачки и посмотреть результат.
Обычно у меня правило отвечать только на первое сообщение, якобы у нас тут вдумчивый диалог, такая переписка голубиной почтой, а не чат. Но раз вы выдали побольше информации, немножко изменю себе.
«я что-то в интернете не понимаю?»
Конкретно про вас не знаю, но зачастую люди не различают «хороший интернет» и «быстрый интернет». Неплохой проверкой, быстрый ли у вас интернет, служит http://www.speedtest.net/
А вот проверить, хороший ли у вас интернет, немного сложнее. Для этого я рекомендую воспользоваться утилитой fping 3.0.0. Её нужно запустить из командной строки, работает она так же, как простой ping, но позволяет отправлять пакеты часто. Ну и проверять мы будем сразу много чего.
Самое первое, что каждому человеку хочется знать — это пинги до гейтвея.
ipconfig /all
fping 123.123.123.123 -c -t0
Где 123.123.123.123 — это IP-адрес вашего шлюза, gateway IP address. Обычно это что-то вроде 192.168.0.1 или 192.168.1.1, в случае если у вас есть роутер.
Остановить поток информации можно командой Ctrl+C.
В статистике пингов до гейтвея мы ожидаем увидеть время ответа меньше 1мс. Точно не больше 20мс, и уж точно время должно быть стабильным, а не скакать 20мс+, также не должно быть потерь. 0% потерь, 0% packet loss.
Следующий шаг — пропинговать таким же образом какой-нибудь ya.ru,
fping ya.ru -c -t0
Здесь хорошие пинги это около 2мс, само собой тоже без резких перепадов и без потерь. Полагаю, с пингами до 40мс можно жить. Можно хорошо жить и на других конфиругациях, но как правило — нет.
Если и тут всё хорошо, значит поздравляю, у вас хороший интернет.
Дальше нужно будет смотреть уже на конкретные каналы и их video stats, что там с буферизацией. В подавляющем числе случаев, проблема в итоге окажется на стороне вашего провайдера. То, что у вас глючит роутер — даже не рассматриваю, само собой это первое, что вы уже попробовали — подключились напрямую, без него.
На самом деле, если «дело в провайдере», то это наложение проблем провайдера с особенностями твича. Насколько я понимаю, твич по-разному обрабатывает ужатые потоки, и оригинальный. Если автор вещает в 1080р, ужатый поток будет проходить один пайплайн, а поток оригинального разрешения — вполне может просто напрямую пересылаться, и работать это может по-разному. Короче, попробуйте посмотреть с тем же самым качеством, но другие каналы. Если там лагать не будет — это почва для размышлений.
Кроме того, «раньше не лагало» — когда? Ещё тогда, когда был флеш?
Если так, то может быть плеер пытается использовать существующую видео карту этого слабого компьютера, и может быть она слабая. Идёт ли нагрузка и какая она на видеокарту, можно посмотреть например с помощью тулзы из Sysinternals Suite Process Explorer.
Причин может быть много. Нужно смотреть и думать. Как правило, это недостаточно хороший интернет.
Здравствуйте! Перепробовал множество различных манипуляций по устранению лагов на Twitch, а в итоге: никаких изменений. Что самое интересное, работало все прекрасно: все грузилось на высоком качестве без зависаний, а теперь: YouTube при таком же (720р) разрешении работает отлично, даже 1080р грузит, а Twitch каждые 10-15 секунд начинает останавливаться, грузиться и продолжает работать. Потом по новой грузит. Уже на разных стримах побывал) Обидно… раньше смотрел без нареканий… Интернет тестировал на предмет стабильной работы и скорости — все работает также без нареканий. Подскажите, пожалуйста, в чем проблема и возможно ли ее разрешить!?
Заранее спасибо!
P.S. Порекомендовали «прислушаться» к жесткому диску, ибо «возможно» он «сыпется», поэтому многое чего не подгружает так, как нужно. Так ли это!?
Здравствуйте, Кирилл. Рекомендацию из моего комментария выше выполнили? Протестировали сеть с помощью утилиты fping?
Практически невозможно, чтобы ваша проблема была связана с жёстким диском. В первую очередь это именно мощности обработки (процессор, видеокарта), и сеть. Например, на одном из моих мощных i7 компьютеров стоит пассивная видеокарта 2008 года выпуска, слабая. Там у меня раз в несколько секунд на долю секунды подвисает всё, что 60фпс на твиче. Даже 720х60. Хотя с сетью всё прекрасно.
И другой пример: всё хорошо с компьютером, но подключил второго провайдера. Скорость сети вроде бы нормальная, но видимо у них что-то плохо с роутами. Потому что лагало всё, кроме самых низких битрейтов, как раз как у вас: раз в 7-15-30 секунд видео останавливалось на кеширование.
Что именно происходит с вами — нужно посмотреть в информации на стриме твича, как её смотреть я писал выше. Я как всегда делаю ставку на то, что у вас проблемы с сетью. Например, если для вас это важно, можете походить по соседям, у которых тот же интернет, что и у вас, и попросить запустить стрим. Если обнаружится, что у всех те же самые проблемы, что и у вас, то версия интернета укрепляется. Было бы идеально, чтобы у вас была возможность проверить подобно моей: рядом два провода, с хорошим интернетом, и с проблемным. Перетыкаем провод, и каст начинает играть хорошо. Обратно — плохо. 100% проблемы в интернете. Звоним в техподдержку и насточиво требуем починить. Первые два уровня техподдержки обычно не понимают, как работает интернет, будут пытаться заставить вас отключить антивирус и перезагрузить роутер (и будут правы, конечно же ради эксперимента отключите это всё, воткните провод с интернетом напрямую в компьютер). И только потом, если вы будете настойчивы и последовательны, вас допустят до сетевиков, которые на самом деле решают проблемы.
Удачи =)
Если вам не сложно, поясните, пожалуйста, как работать с утилитой fping 3.0.0.
P.S. Вчера ночью включил стримы на Twitch-e… Работало все без нареканий и никаких подвисаний, а утром-днем зашел — и понеслась!
Кирилл, как работать с fping я объяснил в комментарии выше.

Если хотите выйти за рамки данных рекомендаций, запустите программу fping c ключом /? , будет выведен список всех доступных ключей, их описание.

То, что в разное время работает по-разному практически однозначно свидетельствует о том, что проблема всё-таки именно в интернете. Ну не жёсткий же диск у вас по ночам работает лучше.
Решение, как правило, очень простое: смена интернет-провайдера. Обычно это во много раз проще, чем объяснить, доказать и дождаться решения от текущего. Но попытка не пытка. В одном тверском провайдере после месяца общения я смог добиться, чтобы заработало нормально, на несколько месяцев. Потом опять сломалось. Не самый простой путь =)
Я читал комментарии, поэтому и попросил вас снова пояснить(по пунктам) как работать с утилитой) После того, как найду Командную строку и включу ее — на этом мои полномочия все!) Обрыскал в Интернете инфу про fping — ничего похожего по тому, как с ней обращаться(что прописывать в Командной строке и так далее) Поэтому и снова прошу вас, если не затруднит. Заранее спасибо вам.
Ну, сначала нужно её скачать. Потом нужно распаковать содержимое архива. Потом нужно в командной строке зайти именно в ту папку, где лежит fping.exe, потом нужно набирать те команды, которые описаны выше. Стандартная компьютерная грамотность.
Если не хотите каждый раз переходить в папку, где лежит эта программа, можно добавить путь к ней в переменную PATH. Это вам не нужно, но если что — направление я дал, дальше гугл справится.
Здравствуйте! Такая беда, фризы при просмотре стрима(именно на твиче) от качества 1080 60fps
Компьютер нормальный, процессор даже 20% не загружается, сравнивал с древним(слабым) ноутбуком и там все ровно
Здравствуйте, Алексей. «20% загрузки процессора» это в условиях современной многопоточности может означать разное. https://dima.stefantsov.com/hyper-threading-na-samom-dele-prakticheski-ne-rabotaet/
Например если у вас 4-ядерный процессор с гипер-треадингом, т.е. 8 логических ядер, то 20% вполне может означать, что одно из ядер загружено на 100% и не может обработать больше. Вероятно, нужен или более хороший процессор, или видеокарта.
В остальном, чтобы разобраться, вам необходимо проделать все те же самые шаги, что и всем людям.
Лагает только тогда. когда делаю показ на весь экран, не понимаю, в чем проблема. :с
Здравствуйте, So_Strange1. Это выглядит как классический случай «не тянет компьютер».
То есть либо процессор слабый, либо видеокарта слабая, либо драйверы неподходящие и поэтому видеокарта ведёт себя как слабая.