Как транслировать на Ютуб с ip камеры

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

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

RTSP ПОТОК С КАМЕР ВИДЕОНАБЛЮДЕНИЯ.КАК ПРОЩЕ ВЕСТИ НАБЛЮДЕНИЕ.КАК ВЕЩАТЬ В YOUTUBE!!!

От 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 захвата и депакетизации.

КАМЕРА С ПРЯМОЙ ТРАНСЛЯЦИЕЙ НА ЮТУБ И СОЦ.СЕТИ!!!RTMP.

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

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

/rtsp/startup

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

/rtsp/find_all

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

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

/rtsp/terminate

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

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

Небольшой мануал, как с помощью минимального кода организовать 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 поток с виртуальной камеры.

var url = «https://demo.flashphoner.com:8444/rest-api»; var rtspStream = «rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov»

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

function init_page() < Flashphoner.init(<>); repubBtn.onclick = streamToYouTube; stopBtn.onclick = stopStream; getStream(); >

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

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»); >

Еще по теме:  Vidiq Ютуб что это

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

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() >

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

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

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

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

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»; >

Эта функция так же отправляет на 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:

function stopStream() < fetchUrl = url + «/rtsp/terminate»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, 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»:

var url = «https://demo.flashphoner.com:8444/rest-api»; var rtspStream = «rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov»​ function init_page() < Flashphoner.init(<>); 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

Трансляция потокового видео с профессионального устройства видеозахвата (Live Encoder) по протоколу RTMP — Функции сервера по конвертации видеопотоков от Live Encoder в RTMP

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

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

Стриминг множества RTSP IP камер на YouTube и/или Facebook

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

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

Еще по теме:  Как сделать так чтобы смотреть Ютуб и сидеть в ВК

От 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 проект.

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

Небольшой мануал, как с помощью минимального кода организовать 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 поток с виртуальной камеры.

var url = «https://demo.flashphoner.com:8444/rest-api»; var rtspStream = «rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov»

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

function init_page() < Flashphoner.init(<>); repubBtn.onclick = streamToYouTube; stopBtn.onclick = stopStream; getStream(); >

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

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»); >

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

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() >

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

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

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

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

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»; >

Эта функция так же отправляет на 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:

function stopStream() < fetchUrl = url + «/rtsp/terminate»; const options = < method: «POST», headers: < «Content-Type»: «application/json» >, 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»:

var url = «https://demo.flashphoner.com:8444/rest-api»; var rtspStream = «rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov»​ function init_page() < Flashphoner.init(<>); 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 видеопотоков

Источник: h.amazingsoftworks.com

Трансляция видео с веб-камеры по сети

Веб-камеру компьютера можно использовать как камеру видеонаблюдения для вещания видео по локальной сети, а если у вас выделенный IP, — настроить перенаправление портов в роутере и транслировать видео через Интернет.

Для трансляции картинки с веб-камеры подключенной к компьютеру воспользуемся бесплатным плеером VLC Media Player. Сначала произведем настройку программы.

Настройка плеера

Запускаем программу и выбираем опцию меню «Медиа > Передавать…».

Передавать - опция в VLC плеере

Переходим на вкладку «Устройство захвата». В выпадающем списке «Режим захвата» оставляем значение «Direct Show», хотя если выбрать значение «Экран», то можно транслировать картинку с дисплея вашего компьютера. В списке «Название видеоустройства» выбираем подключенную веб-камеру. Так как у меня камера встроена в ноутбук, она называется: «Integrated Webcam». В списке «Название аудиоустройства» выбираем микрофон.

Выбор устройства для захвата

В разделе «Параметры» нажимаем кнопку «Другие», в открывшимся диалоге ставим галочку «Настройки устройства» и нажимаем «ОК».

Включение дополнительных настроек

Нажимаем кнопку «Поток». Откроется мастер настройки вещания. На первом шаге просто жмем «Next >».

Первый шаг мастера трансляции

На втором шаге, в выпадающем списке «Новое назначение» выбираем «HTTP» и нажимаем на кнопку «Добавить».

Второй шаг в мастере трансляции

Откроется диалог для настройки порта и URI оставляем все по умолчанию и переходим к следующему шагу нажав «Next >».

Третий шаг мастера трансляции

В выпадающем списке «Профиль» выбираем «Video – WMV + WMA (ASF)», хотя можно выбрать и другой кодек. Нажимаем на кнопку настроек «Отвертка с гаечным ключом».

Четвертый шаг мастера трансляции

На вкладке «Видеокодек» в параметрах кодирования задаем битрейт. Чем меньше у вас скорость соединения тем меньше ставьте битрейт.

Настройки битрейта видео

На вкладке аудиокодек также задаем битрейт звука и выставляем количество каналов. У меня моно микрофон, поэтому я выбрал 1 канал.

Настройки аудио

Нажимаем на кнопку «Сохранить» и преходим к следующему шагу нажав «Next >» На последнем шаге нажимаем кнопочку «Stream».

Пятый шаг мастера трасляции

Запустятся детальные настройки видео и аудио. В первом окне просто нажимаем «ОК».

Первый диалог дополнительных настроек

Во втором окне задаем разрешение транслируемой картинки и нажимаем «Применить» и «ОК».

Второй диалог дополнительных настроек

В третьем окне просто нажимаем «ОК». Начнется трансляция видео в сеть.

Третий диалог дополнительных настроек

Чтобы открыть его на другом компьютере, находящемся в общей сети с вещающим компьютером, вам нужно знать IP адрес вещающего компьютера. Для этого на компьютере с веб-камерой нажмите сочетание клавиш «Windows+R» или кликните по кнопке «Пуск» в Windows 7, затем в поиске наберите «Выполнить» и кликните по программе «Выполнить». Наберите «cmd» и нажмите Enter. Запустится оболочка командной строки, наберите команду «ipconfig» и нажмите Enter. В строке «IPv4-адрес» будет IP адрес вещающего компьютера!

Команда ipconfig

Воспроизведение на другом компьютере

Теперь открываем на другом компьютере встроенный в систему Windows Media Player, и нажимаем «Файл > Открыть URL-адрес», или нажимаем клавиши «Ctrl+U».

Открыть видеопоток в Windows Media Player

Вводим адрес в формате «http://IP-адрес:порт» и нажимаем кнопку «OK».

Ввод адреса потока

Ждем несколько секунд (может и больше минуты, зависит от скорости соединения и времени буферизации) и появится картинка с камеры другого компьютера.

Просмотр видео в Windows плеере на другом компьютере

Воспроизведение на телефоне

Также видеотрансляцию можно просматривать на экране мобильного телефона на Android с помощью приложения IP Cam Viewer.

Источник: it-handbook.com

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