2021-07-05 · Nacht · streaming, peertube, protocols
Стриминг сам по себе является неэффективным и избыточным говном. Мы используем устаревшие инструменты как для формирования данных (кодирование в H.264), так и для отправки данных с клиента на сервер (RMTP, пришедший к нам прямо из ныне мёртвого Adobe Flash, являющийся TCP-протоколом с задержкой 3-5 секунд). Как клиентские программы для стриминга, так и вендоры, предоставляющие платформы-серверы для приёма и отображения этого стрима зрителям, вообще никак не двигаются в сторону поддержки более эффективных технологий.
Айсберг, вроде бы, сдвинулся, когда YouTube, как оказалось, начал поддерживать приём потока в H.265 (более эффективный, но ресурсоёмкий кодек следующего поколения, который может сжимать данные в лучшем или том же качестве, что и H.264, но используя меньший битрейт) и транспортировки его до сервера с помощью HLS (TCP-протокол от Apple с поддержкой буферизации для гарантирования целостности потока, но с адской задержкой в 30-60 секунд). Отображение стрима с пользовательской стороны, кстати, если я ничего не путаю, сейчас производится тоже с помощью HLS. Но эта опция предназначена не для плебса, а для тех, кто хочет стримить HDR-контент. Поддержки кодирования в H.265 в обычных клиентских программах, вроде OBS, нету — только если использовать хак и указывать специальные опции для ffmpeg.
Какой-нибудь SRT (UDP-протокол с задержкой в 300 миллисекунд) мы вряд ли увидим на своём веку. Это слишком sci-fi для текущего рыночка, чтобы его просто взять и принять. Будем жрать устаревшие неэффективные протоколы ещё лет десять.
PeerTube с технической стороны перенял всё то же самое, может быть, даже худшее: кодирование видео только в H.264 и транспортировку видео с помощью HLS. Учитывая, что на средних серверах нет ни поддержки аппаратного кодирования видео (сервер должен долбить CPU), ни CDN для эффективной передачи потока зрителям (если у тебя узенький интернет-канал, зрители просто не смогут комфортно наблюдать за происходящим, если вообще смогут), становится непонятно, для кого вообще такая опция существует.
Я не исключаю возможную пользу PeerTube и других опций, вроде OwnCast, например, для какого-то серого контента, который по юридическим причинам нельзя стримить на популярных платформах. Но если у тебя самый ординарный контент, вроде игр и разговоров, и ты рассчитываешь на какую-никакую аудиторию, и хочешь её постепенного расширения, лучше всё-таки передать нагрузку тем, кто может её эффективно принять.
Ну, и по мелочи, плюс непосредственного YouTube как такового: discoverability. Мои отвратительные записи каким-то чудом находят и смотрят. Более развитая социальная составляющая, наверное.