::: warn Эта статья не дописана
:::
#Куда и как стримят?
Чтобы начать потоковую передачу, необходимо сперва узнать о том, куда можно стримить и какие параметры потоков ожидают увидеть стриминговые площадки.
Выделим следующие виды платформ для стриминга:
- Соцсети
- Видеохостинги
- CDN -- сети доставки контента
- Специализированные видеоплатформы для стриминга
#Соцсети
Платформы имеют немного разные требования ко входящим потокам. Выберем платформы для примера и с ними будем работать. Если вам понадобится другая платформа, вы увидите, что по настройке они обычно похожи друг на друга.
Из соцсетей и чатов выделим ВК, Одноклассники, Фейсбук, Телеграм.
Инстаграм пошел своим путем и снаружи потоки не принимает – только с камеры смартфона. Возьмем для примера ВК и телеграм.
В ОБС в настройках стрима уже есть адреса многих стриминговых площадок, но Телеграми и ВК там нет. Поэтому выбираем параметр custom. Как видим, от площадок нам нужно получить всего 2 параметра: адрес сервера и ключ стрима. В ВК эта информация находится в разделе “видео”. Нажмите на кнопку нажать эфир и выберете, куда вы хотите стримить - к себе на страницу или в сообщество. Чуть ниже находится ссылка на rtmp сервер и ключ трансляции.
В телеграмме стрим сделать чуть сложнее. Трансляцию можно запускать только в частном канале из приложения. Ссылку на трансляцию Телеграм также не предоставляет, но сохраняет запись в сообщения сообщества.
Rtmp сервер и ключ трансляции находятся во вкладке stream with в этой кнопке
Видеохостинги. ЮТ, дальше надо посмотреть импортозамещение и забугорные аналоги. Вам вообще полезно их знать.
Наверное, самые известные платформы для стриминга -- это Ютюб и Твич. Адреса их RTMP серверов есть в ОБС. Нужно только вставь ключи или залогиниться. Если вы логинитесь, OBS сам получает ключи на сервере через программный интерфейс.
При стриминге некоторые платформы предлагают два варианта организации трансляции: постоянный канал и события. Канал -- это постоянный адрес. Если вы ведете передачу, то ее видно по этому адресу, если закончили, то ничего не показывается. Всё как в эфирном телевидении. При стриминге по событиям за каждым событием закрепляется свой адрес, по окончании события показывается его запись. Так работают, например, ютьюб и ВК.
Стриминг событий удобнее делать в формате событий -- это удобно для зрителей. Но на передающей стороне надо помнить, что при обрыве связи сервер может посчитать ваше событие законченным и станет показывать запись того, что удалось принять до обрыва. Дальнейшая передача будет приниматься сервером, но показываться не будет. Например, ВК просто тихо добавляет такие “продолжения” эфира в разделе “Видео”.
Ключи трансляции нужно хранить в секрете. Завладевший вашим ключом сможет перехватить поток и показать свой контент у вас на канале -- вероятно, что не совсем то, что вы планировали.
В последнее время популярность набирает Дзен, но трансляцию там могут сделать не все. У вас на канале должно быть не менее тысячи подписчиков, если вы ведете трансляции через мобильное приложение, или ста подписчиков при трансляциях с компьютера. На канале также должна быть подключена монетизация. Администрация платформы также оставляет за собой право отключить вам эту опцию.
# Сети доставки контента
CDNVideo, NGenix, Akamai
Сети доставки контента -- CDN -- это специализированные видеоплатформы для стриминга. Их основная задача -- раздать вашу трансляцию множеству зрителей, как правило, распределенных географически.
Дополнительные сервисы -- это платные просмотры (пейволлы), многопоточные трансляции, в которых зритель может сам выбирать поток (камеру или презентацию), управление комментариями и так далее.
#Прямой эфир и реальное время
Когда мы говорим про прямую трансляцию в интернете, нужно понимать, что существует разное понимание прямого эфира. Это не всегда передача в реальном времени. Вот несколько ситуаций, где задержка звука или картинки критична:
- Разговор по телефону. Вы сталкивались с ситуацией, когда в разговоре ваш собеседник начинает говорить невпопад или неожиданно долго молчит в ответ на совсем простой вопрос? Телефония стала цифровой, использует кодирование и составные каналы связи. Все это вносит задержку, и от телефонистов мы можем взять ориентиры по нормам этой задержки. Есть протокол G.711, используемый в телефонии, который определяет норму задержки передачи сигнала в одну сторону в 150 миллисекунд. Считается, что уменьшение этой задержки не вызовет заметного ощущения “живости” беседы, а увеличение сделает задержку заметной и раздражающей.
- Получение изображения с цифровой камеры, а звука с аналогового входа. Аналоговый сигнал проходит свой тракт без задержки -- он может усиливаться, фильтроваться, но задерживаться ему просто негде. В аналоговых системах нужно собирать специальную схему, чтобы задержать сигнал, называется “линия задержки”. А цифровое изображение подобно описанному ранее цифровому звуку в телефоне, кодируется, передается по сети или шине вроде USB, потом декодируется -- все это происходит не мгновенно. Задержка может быть пренебрежимо мала, как в случае с веб-камерами, подключаемыми по USB, а может достигать неприлично больших значений, как в случае с сетевыми потоками, которые еще и воспроизводятся с буферизацией, а без нее не воспроизводятся. Мы с вами как раз с такими потоками и учимся работать в относительно реальном времени.
Какая здесь возникает задержка и что делать с рассинхронизацией видео и звука?
Мы помним про ориентир, данный нам телефонистами. Теперь посмотрим, что может выступать ориентиром у телевизионщиков. В цифровом видео есть дискретная величина -- частота кадров. Не во всех кодеках, кстати, она постоянная, но будем придерживаться телевизионных стандартов. В европейских стандартах PAL и SECAM -- 25 кадров в секунду, в американском NTSC -- 30. Итак, минимальный квант времени -- одна двадцать пятая секунды, то есть, 40 миллисекунд. Дальше -- это вопрос внимательности зрителя, опытные видят смещение в один кадр, но на практике 2-3 кадра можно допустить, больше уже заметят даже случайные в этом вопросе люди. Итого, придерживаемся планки 120 мс. Здесь мы говорим именно о рассинхронизации. Если же вы получили несколько потоков с большей, но при этом одинаковой задержкой, а также задержали звук на соответствующее время, то допустимая величина этой задержки ограничена лишь вашими задачами. Например, если режиссер прямого эфира не дает указания операторам, то задержка существенной роли не играет. Более того, если режиссер находится на месте съемки, то у него появляется запас времени на реакцию. Запускают на экране видеоролик -- можно успеть переключить микшер на захват экрана к началу ролика. Оператору или режиссеру, который говорит оператору, что нужно сделать, задержка будет мешать. Представьте, что вы ведете автомобиль, а на ветровом стекле задержка в пару секунд. - Если вы записываете речь или вокал и слышите себя с задержкой, то вы будете слышать даже минимальные задержки, поэтому в микрофонах или звуковых картах с цифровым выходом обычно делают аналоговый выход для наушников, там используется прямой аналоговый тракт.
Мы разобрали случаи, когда требуется доставка сигнала или потока в реальном времени и допустимые величины задержки. А теперь посмотрим на стриминг в соцсети.
Когда идет трансляция футбольного матча, то зрители эфирного телевидения видят гол раньше, чем зрители онлайн-трансляции. Эфирный телевизионный сигнал имеет свою задержку, но она несравнима с задержкой из-за буферизации в интернет-трансляции. Передача видео для большой аудитории через интернет устроена так, что меньше 12-15 секунд задержка там обычно не бывает, а в описанном случае с футбольными матчами “гол” кричат за стенкой на полминуты раньше, чем у вас покажут в интернет-трансляции -- можно успеть открыть сайт с трансляцией и все самое интересное увидеть в как бы прямом эфире. Это мы подробнее разберем в теме про протоколы потоковой передачи, но здесь резюмируем: задержки в дистрибуции, то есть, доставке видео конечному зрителю не так важны, пока не нужен интерактив.
Если вы смотрите футбол, то повлиять на исход игры вы вряд ли можете, а если идет конференция и вы задаете вопрос хотя бы в чате, то при такой задержке вопрос рискует прийти, когда выступает уже следующий докладчик.
Поэтому важно не путать два жанра: видеотрансляцию и видеоконференцсвязь, то есть, общение в реальном времени двух и более, но все же ограниченного числа людей. Для видеосвязи используются другие инструменты и протоколы, там другие ограничения, чем в трансляциях и это мы также изучим далее в теме про протоколы стриминга.
Когда мы начинали заниматься трансляциями в интернет в 2006 году, устроили из МИЭМа телемост с коллегами в Петербурге и наблюдали описанный выше конфуз: из-за задержки в 20 секунд в каждую сторону общение приходилось дублировать по телефону, а под занавес аплодисменты из Москвы прозвучали в Петербурге уже после начала следующего выступления.