Что такое Youtube rtmps

Как известно, у YouTube отсутствует фича захвата RTSP потока. Возможно, это сделано не случайно, а исходя из голой прагматики, чтобы люди не повесили на YouTube статическое видеонаблюдение за своими подъездами и не утилизировали его каналы, которые, как оказалось в пандемию, вовсе не резиновые. Напомним, что некоторое время назад имели место истории с ухудшением и ограничением качества стримов до 240p. Или есть еще одно предположение: стримы с IP камер это зло для YouTube, потому что у них чуть более ноля зрителей, на которых не накрутишь миллион просмотров рекламы. Так или иначе, фича не представлена, и мы постараемся заполнить этот пробел — помочь YouTube осчастливить пользователей.

Допустим, мы хотим взять обычную уличную IP камеру, которая отдает H.264 поток по RTSP и перенаправить ее на YouTube. Для этого потребуется принять RTSP поток и сконвертировать в RTMPS поток, который принимает YouTube. Почему именно в RTMPS, а не RTMP? Как известно несекьюрные протоколы отмирают. HTTP предан гонениям, и его участь постигла другие протоколы, не имеющие буквы S — значит Secure на конце.

РЕСТРИМ 2021 на твич и ютуб ◈ какой сервис выбрать , плагин multiple rtmp outputs обс

От RTMP потока отказался Facebook, но спасибо, оставил RTMPS. Итак, конвертируем RTSP в RTMPS. Делаем это Headless способом (без использования UI), т.е. на сервере.

Для одного RTSP потока потребуется один YouTube аккаунт, который будет принимать поток. Но что делать если камер не одна, а много?

Да, можно насоздавать вручную несколько YouTube-аккаунтов, например, чтобы покрыть видеонаблюдением приусадебный участок. Но это с огромной вероятностью нарушит условия пользовательского соглашения. А если камер не 10, а все 50? Создавать 50 аккаунтов? А дальше что?

Смотреть это как? В этом случае на помощь может прийти микшер, который объединит камеры в один поток.

Посмотрим, как это работает на примере двух RTSP камер. Результирующий поток mixer1 = rtsp1 + rtsp2. Отправляем стрим mixer1 на YouTube. Все работает — обе камеры идут в одном потоке. Здесь стоит заметить, что микширование — достаточно ресурсоемкая по использованию CPU операция.

При этом, так как мы уже имеем RTSP поток на стороне сервера, мы можем перенаправить этот поток на другие RTMP endpoints, не неся при этом дополнительных расходов по CPU и памяти. Просто снимаем трафик с RTSP стрима и тиражируем на Facebook, Twitch, куда угодно без дополнительного RTSP захвата и депакетизации.

Меня, как девопса, будет мучать совесть, если я не заскриптую то, что можно было бы заскриптовать. Автоматизации способствует наличие REST API для управления захватом видео с камеры и ретрансляцией.

Например, с помощью запроса:

/rtsp/startup

можно захватить видеопоток от IP камеры.

/rtsp/find_all

позволит получить список захваченных сервером RTSP потоков.

Запрос для завершения RTSP сессии выглядит так:

/rtsp/terminate

Захватом и ретрансляцией видеопотоков можно управлять или с помощью простого браузера и любого удобного REST клиента, или с помощью минимального количества строчек кода встроить функционал управления сервером в свой web проект.

How To Find RTMP Stream key and RTMP URL in YouTube

Давайте подробно рассмотрим, как это можно сделать.

Небольшой мануал, как с помощью минимального кода организовать Live трансляцию на YouTube и Facebook

В качестве серверной части мы используем demo.flashphoner.com. Для быстрого развертывания своего WCS сервера воспользуйтесь этой инструкцией или запустите один из виртуальных инстансов на Amazon, DigitalOcean или в Docker.

Предполагается, что у вас имеется подтвержденный аккаунт на YouTube и вы уже создали трансляцию в YouTube Studio, а так же создали прямую видеотрансляцию в своем аккаунте на Facebook.

Для работы Live трансляций на YouTube и Facebook нужно указать в файле настроек WCS flashphoner.properties следующие строки:

rtmp_transponder_stream_name_prefix= Убирает все префиксы для ретранслируемого потока.

rtmp_transponder_full_url=true В значении «true» игнорирует параметр «streamName» и использует RTMP адрес для ретрансляции потока в том виде, в котором его указал пользователь.

Еще по теме:  Как выбрать роутер Ютуб

rtmp_flash_ver_subscriber=LNX 76.219.189.0 — для согласования версий RTMP клиента между WCS и YouTube.

Теперь, когда все подготовительные действия выполнены, перейдем к программированию. Разместим в HTML файле минимально необходимые элементы:

Подключаем скрипты основного API и JS скрипт для работы live трансляции, который мы создадим чуть позже:

Инициализируем API на загрузку web-страницы:

Добавляем нужные элементы и кнопки поля для ввода уникальных кодов потоков для YouTube и Facebook, кнопку для републикации RTSP потока, div элемент для вывода текущего статуса работы программы и кнопку для остановки републикации:

Start republish
Stop republish

Затем переходим к созданию JS скрипта для работы републикации RTSP. Скрипт представляет собой мини REST клиент.

Константа «url», в которую записываем адрес для запросов REST API . Замените «demo.flashphoner.com» на адрес своего WCS.

Константа «rtspStream» указываем RTSP адрес потока с IP камеры. Мы для примера используем RTSP поток с виртуальной камеры.

Функция «init_page()» инициализирует основной API при загрузке web — страницы. Так же в этой функции прописываем соответствие кнопок вызываемым функциям и вызываем функцию «getStream», которая захватывает RTSP видеопоток с IP камеры:

);repubBtn.onclick = streamToYouTube;stopBtn.onclick = stopStream;getStream();>

Функция «getStream()» отправляет на WCS REST запрос /rtsp/startup который захватывает видеопоток RTSP адрес которого был записан в константу rtspStream

, body: JSON.stringify(< «uri»: rtspStream >), > fetch(fetchUrl, options);console.log(«Stream Captured»);>

Функция «streamToYouTube()» републикует захваченный видеопоток в Live трансляцию на YouTube:

, body: JSON.stringify(< «streamName»: rtspStream,»rtmpUrl»: «rtmp://a.rtmp.youtube.com/live2/»+document.getElementById(«streamKeyYT»).value >), > fetch(fetchUrl, options);streamToFB()>

Эта функция отправляет на WCS REST вызов /push/startup в параметрах которого передаются следующие значения:

«streamName» — имя потока, который мы захватили с IP камеры. Имя потока соответствует его RTSP адресу, который мы записали в константу «rtspStream»

«rtmpUrl» — URL сервера + уникальный код потока. Эти данные выдаются при создании Live трансляции в YouTube Studio. В нашем примере мы жестко закрепили URL в коде, вы можете добавить для него еще одно поле на свою web страницу. Уникальный код потока указывается в поле «streamKeyYT» на нашей Web странице.

Функция «streamToFB» републикует захваченный видеопоток в Live трансляцию на Facebook:

, body: JSON.stringify(< «streamName»: rtspStream,»rtmpUrl»: «rtmps://live-api-s.facebook.com:443/rtmp/»+document.getElementById(«streamKeyFB»).value >), > fetch(fetchUrl, options);document.getElementById(«republishStatus»).textContent = «Stream republished»;>

Эта функция так же отправляет на WCS REST вызов «/push/startup» в параметрах которого передаются значения:

«streamName» — имя потока, который мы захватили с IP камеры. Имя потока соответствует его RTSP адресу, который мы записали в константу «rtspStream»

«rtmpUrl» — URL сервера + уникальный код потока. Эти данные можно найти на странице Live трансляции в Facebook в секции Live API. Url сервера в этой функции мы указали в коде, как и для функции републикации на YouTube. Уникальный код потока берем из поля «streamKeyFB» на Web странице.

Функция «stopStream()» отправляет RTSP запрос «/rtsp/terminate» который прекращает захват потока с IP камеры на WCS и соответственно прекращает публикации на YouTube и Facebook:

, body: JSON.stringify(< «uri»: document.getElementById(«rtspLink»).value >), > fetch(fetchUrl, options);document.getElementById(«captureStatus»).textContent = null;document.getElementById(«republishStatus»).textContent = null;document.getElementById(«stopStatus»).textContent = «Stream stopped»;>

Полные коды HTML и JS файлов рассмотрим немного ниже.

Итак. Сохраняем файлы и пробуем запустить.

Последовательность действий для тестирования

Создаем Live трансляцию в YouTube Studio. Копируем уникальный код видеопотока:

Открываем созданную ранее HTML страницу. Указываем в первом поле уникальный код видеопотока, который мы скопировали на YouTube:

Создаем Live трансляцию в своем аккаунте на Facebook. Копируем уникальный код видеопотока.

Возвращаемся на нашу web страничку, вставляем скопированный код во второе поле и нажимаем кнопку «Start republish

Теперь проверяем работу нашей републикации. Снова переходим в YouTube Studio и на Facebook, ждем несколько секунд и получаем превью потока.

Для завершения републикации нажмите кнопку «Stop»

Теперь, как и обещали, исходные коды примера полностью:

Листинг HTML файла «rtsp-to-rtmp-min.html»

Start republish
Stop republish

Листинг JS файла «rtsp-to-rtmp-min.js»:

); repubBtn.onclick = streamToYouTube; stopBtn.onclick = stopStream; getStream();>function getStream() < fetchUrl = url + «/rtsp/startup»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, body: JSON.stringify(< «uri»: rtspStream >), > fetch(fetchUrl, options); console.log(«Stream Captured»);>function streamToYouTube() < fetchUrl = url + «/push/startup»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, body: JSON.stringify(< «streamName»: rtspStream, «rtmpUrl»: «rtmp://a.rtmp.youtube.com/live2/» + document.getElementById(«streamKeyYT»).value >), > fetch(fetchUrl, options); streamToFB()>function streamToFB() < fetchUrl = url + «/push/startup»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, body: JSON.stringify(< «streamName»: rtspStream, «rtmpUrl»: «rtmps://live-api-s.facebook.com:443/rtmp/» + document.getElementById(«streamKeyFB»).value >), > fetch(fetchUrl, options); document.getElementById(«republishStatus»).textContent = «Stream republished»;>function stopStream() < fetchUrl = url + «/rtsp/terminate»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, body: JSON.stringify(< «uri»: rtspStream >), > fetch(fetchUrl, options); document.getElementById(«republishStatus»).textContent = «Stream stopped»;>

Еще по теме:  Когда цветет багульник Ютуб

Для минимальной реализации требуется совсем немного кода. Конечно для итогового внедрения функционала еще потребуется небольшая доработка напильником — добавить стили на web страницу и разные проверки на валидность данных в код JS скрипта. Но это работает.

Ссылки

WCS на Amazon EC2 — Быстрое развертывание WCS на базе Amazon

WCS на DigitalOcean — Быстрое развертывание WCS на базе DigitalOcean

WCS в Docker — Запуск WCS как Docker контейнера

Трансляция WebRTC видеопотока с конвертацией в RTMP — Функции сервера по конвертации WebRTC аудио видео потока в RTMP

HTML5-трансляции с RTSP-IP камер — Функции сервера по воспроизведению RTSP видеопотоков

Источник: personeltest.ru

IP видеокамеры

RTSP (Real Time Streaming Protocol) — потоковый протокол реального времени, предназначенный для использования в системах, работающих с мультимедиа данными. Протокол позволяет передавать видеоизображение и звук. Передача звука зависит от возможностей и конкретной реализации оборудования и ПО. Для получения изображения от IP видеокамеры в соответствующем меню оборудования или ПО необходимо ввести команду. Команды для получения видео и звука различаются, и имеют следующие форматы:

Номер потока : 0 — основной поток, 1 — дополнительный поток.

Протокол RTSP поддерживает большинство производителей профессионального IP видеооборудования и ПО. По RTSP протоколу вы можете получить изображение используя компьютерные медиа проигрыватели, такие как Windows Media Player, QuickTime, Skype, Winamp, VLC media player, RealPlayer и многие другие.

Настройка записи на удалённый FTP сервер.

IP камера может записывать по тревоге на удалённый FTP сервер фрагменты видео (файлы .avi ) с разрешением 352х288 или сохранять стоп-кадры с разрешение 720х576 в формате JPEG. Запись на удалённый FTP сервер включается по срабатыванию видеодетектора движения IP камеры. Данную функцию необходимо включить и настроить в меню IP камеры.

Создайте аккаунт на FTP сервере и папку для сохранения записей.

Настройте в меню IP камеры:

  • Настроить параметры соединения с FTP сервером и выбрать тип отправляемого сообщения (видеофрагмент / стоп-кадр) в пункте «СетьРасширенная настройкаFTP» (1)
  • Включить видеодетектор и настроить его зону обнаружения в «СобытияДвижения» (2)
  • Включить отправку видероликов или стоп-кадров на сервер в закладке «СобытияДвиженияСпособ связи» (3).

1 2 3

Можно ли IP видеокамеры Amatek подключить к NVR других производителей ?

Да, IP видеокамеры Amatek можно подключить к NVR других производителей. Вы можете ознакомиться с инструкциями по подключению к оборудованию HiWatch , Hikvision , Dahua , RVi . Схожие процедуры возможны и для других производителей NVR .

Так же для подключения к NVR сторонних производителей Вы можете использовать подключение по протоколу RTSP ( инструкция ).

Трансляция с IP камеры на Youtube

Прямые трансляции Youtube могут быть полезны, если к просмотру IP камеры видеонаблюдения необходимо подключить большое количество человек.

Для организации трансляции на Youtube («ютуб») необходимы:

  • аккаунт на Youtube
  • камера, поддерживающая передачу видеопотока по RTSP.
  • компьютер с программой перекодировки видеопотока.

В ip камере настройте передачу видеопотока с кодеком H.264, передача звука кодеком AAC. Данные настройки являются рекомендованными. Применение кодека видео H.265 и кодеков звука G.711, G.726, PCM может привести к положительному результату, при использовании современных версии программы перекодирования OBS Studio.

Передача видеопотока по RTSP протоколу в большинстве камер включена по умолчанию. Сформируйте команду подключение по RTSP протоколу и проверьте её используя программы медиа-проигрыватели, такие как Windows Media Player, QuickTime, Skype, Winamp, VLC media player, RealPlayer и многие другие.

YouTube принимает видео по протоколу RTMPS поэтому RTSP поток от камеры необходимо конвертировать. Для конвертирования потока необходим компьютер с программой перекодировки. Для данных целей часто используется бесплатная и относительно простая программа для проведения видеотрансляций — OBS Studio. В ней предусмотрена удобная интеграция и готовые предустановки для работы с YouTube, Hitbox, Twich и другими стриминговыми сервисами. Программа OBS Studio позволяет сделать много экранов, имеет функцию «картинка в картинке».

На Youtube

Создайте или зайдите в свой аккаунт на Youtube и перейдите в раздел «Трансляции».
Включите функцию прямой трансляции. Сервис запросит подтверждение аккаунта по номеру телефона. Функция станет доступна в течение 24 часов.
Нажмите на значок камеры в правом верхнем углу. Выберите «Начать трансляцию».
Укажите название, описание и загрузите для нее картинку и нажмите «Создать трансляцию». Вы можете сделать обычную трансляцию (настройка «Открытый доступ»), доступную всем или закрытую трансляцию, просмотр которой будет доступен только пользователям, получившим ссылку (настройка «Доступ по ссылке»). Настраиваются возрастные настройки аудитории.

Еще по теме:  Кто может удалять комментарии на Youtube

В меню «настройки» выбираем URL трансляции (пример — rtmp://a.rtmp.youtube.com/live). Строку в виде «a.rtmp.youtube.com» необходимо перенести в настройки программы OBS studio вставляем строку в виде «a.rtmp.youtube.com», а «live» проставляем в строке «Имя приложения».
Код трансляции вставляем в настройках OBS studio.

В программе OBS studio.
В меню «Файл» «Настройки» закладка «Трансляции» выбираем вариант «YouTube-RTMPS». В качестве сервера выбирается «Primary YouTube Ingest server».
Затем вставляем код, который мы уже получили ранее, при создании трансляции на YouTube.
В окне «Трансляции» выбираем «Запустить трансляцию» — программа начинает передавать видеопоток на сайт «YouTube».

На Youtube

В окне «Трансляции» выбираем «Запустить трансляцию» — программа начинает передавать видеопоток на сайт «YouTube».
Возвращаемся к настройке трансляции на YouTube. В окне предварительного просмотра появится картинка вашего видео. Для начала публичной трансляции нажмите кнопку «Начать эфир».

Источник: amatek.su

Stream Live теперь общедоступен

Stream Live is now Generally Available

Сегодня мы рады объявить о завершении бета-тестирования Stream Live, теперь он доступен всем желающим и готов к приему массового рабочего трафика. Stream Live является функцией Cloudflare Stream, позволяющей разработчикам встраивать видеотрансляции в веб-сайты и нативные приложения.

С момента запуска бета-тестирования разработчики используют Stream для трансляции концертов ведущих мировых исполнителей напрямую поклонникам, разрабатывают на его основе новые платформы для создателей видео, обеспечивают функционирование глобального OTT-сервиса видеотрансляций в режиме 24/7 и многое другое. За время бета-тестирования Stream принял и доставил зрителям по всему миру миллионы минут прямых эфиров.

Каковы бы ни были ваши задачи — трансляция крупных мероприятий, новый масштабный сервис видеоподписок или мобильное видеоприложение с миллионами пользователей — мы к ним готовы.

Потоковые видеотрансляции в больших масштабах — непростое дело

Видеотрансляции требуют большой пропускной способности. Например, поток 1080p 8 Мбит/с продолжительностью 1 час — это 3,6 Гбайт. А учитывая типичные расценки облачных сервисов, даже небольшой объем исходящего трафика «кусается».

Видеотрансляции необходимо кодировать на лету, в режиме реального времени. Люди хотят иметь возможность смотреть трансляции на телефоне через мобильные сети, несмотря на их ограниченную пропускную способность, сетевые задержки и частые сбои соединения. Для этого видеопоток необходимо перекодировать в режиме реального времени в разных разрешениях, чтобы у телефона была возможность переключиться на более низкое разрешение и продолжить воспроизведение. Это может быть непросто (какой битрейт? какие кодеки? сколько?) и недешево: парк виртуальных машин стоит немалых денег.

Имеет значение точка приема видеопотока — протоколы потокового вещания, такие как RTMPS, используют для передачи видео протокол TCP. Если хотя бы один пакет оказывается отброшен или потерян, весь поток останавливается, пока пакет не будет найден и передан заново. Это называется «блокировка начала очереди». Чем дальше находится вещатель от принимающего видеопоток сервера, чем больше сетевых переходов, тем больше пакетов может быть потеряно, что в конечном итоге для зрителей приводит к задержкам и буферизации.

Имеет значение место доставки — видеотрансляции должны кэшироваться и доставляться из точек присутствия, расположенных как можно ближе к зрителям. Чем дольше время приема-передачи по сети, тем больше вероятность, что трансляции будут буферизироваться или переключаться на более низкое качество.

Протоколы потокового вещания меняются — самый распространенный протокол для потоковых видеотрансляций, RTMPS, не поддерживается с 2012 года и относится к эпохе Flash-видео начала 2000-х годов. Новый и набирающий популярность формат, SRT, пока не везде поддерживается. А WebRTC лишь недавно стал способен обеспечивать вещание в формате «один ко многим» с высоким разрешением и в больших масштабах.

Старый подход к решению данной проблемы заключался в объединении отдельных облачных сервисов от разных поставщиков. Один поставщик отлично доставляет контент, но не обеспечивает кодирование. Другой предоставляет API или аппаратные средства для кодирования, но в остальном вынуждает вас полагаться на самого себя и создавать свои собственные средства хранения. Вам как разработчику приходится все это изучать, этим управлять и писать связующий код, учитывающий малоизвестные особенности стриминговых протоколов, кодеков, настроек кодирования и процессов доставки.

Рейтинг
( Пока оценок нет )
Загрузка ...