Как настроить rtmp поток с камеры

Онлайн вещание через Nginx-RTMP: несколько готовых рецептов

Недавно я наткнулся на топик «Сервер онлайн-вещаний на базе nginx» о замечательном модуле Романа Арутюняна (@rarutyunyan) для nginx: nginx-rtmp-module. Модуль очень прост в настройке и позволяет на основе nginx создать сервер публикации видеозаписей и живого вещания.

Про сам модуль можно прочитать на его странице на GitHub, я же хочу привести несколько простых примеров использования. Надеюсь, топик поможет новичкам в видеоделах (таким как я).

Коротко об RTMP

RTMP (Real Time Messaging Protocol) — проприетарный протокол вещания от Adobe. В качестве транспорта по умолчанию используется TCP (порт 1935). Также можно инкапсулировать RTMP в HTTP (RTMPT). Клиент RTMP — это в первую очередь Adobe Flash Player.
Кодек видео — H.264, кодек аудио AAC, nellymoser или MP3, контейнеры MP4 или FLV.

Публикация видеозаписи

Иначе говоря, видео по запросу (VOD). Просто добавьте в nginx.conf в секцию rtmp < server <… >>.

(Прим.: конечно, секцию не обязательно называть vod)
Теперь можно положить в папку /var/videos видеофайл в правильном формате и «скормить» плееру источник, например rtmp://server/vod/file.flv. Насколько я понял, MP4 нативно поддерживает перемотку видео, а FLV придется индексировать отдельно.

Все приведенные далее примеры будут уже про «живую» трансляцию с помощью ffmpeg под Windows. Впрочем, эта информация будет полезна и для пользователей Linux.

Онлайн-трансляция

Мы можем отправить поток видео и аудио на сервер используя все тот же протокол RTMP для публикации. А наши клиенты смогут трансляцию смотреть. Для этого на сервере надо добавить секцию:

Рекомендую сразу закрыть доступ на публикацию всем, кроме доверенных IP, как показано в примере.

На машине, с которой мы будем вещать, для начала надо получить список устройств DirectShow. Пуск — Выполнить — cmd, переходим в папку ffmpeg/bin и запускаем:

Если в названии вашего источника есть русские буквы, то они могут отобразиться кракозябрами. ТруЪ админы заюзают iconv, а простые парни вроде меня раскодируют бяку на сайте Лебедева. FFmpeg’у нужно скормить читабельную надпись.

Теперь, зная имя видео и аудио источника, можно захватить его при помощи ffmpeg и отправить на сервер.

Веб-камера

Как минимум нужно указать источник видео, кодек и сервер:

Вместо «Webcam C170» нужно подставить название вашей камеры из списка.
Ключ -an говорит о том, что мы не передаем аудио поток. Если аудио поток нужен, то строка запуска будет выглядеть примерно так:

Здесь мы использует кодек libfaac, частота дискретизации 44100, 2 канала (стерео). Можно вместо AAC использовать MP3 (кодек libmp3lame).

Аналоговая камера

Если у вашей камеры аналоговый выход, то ее можно подключить к компьютеру с помощью устройства захвата. Я использую дешевую PAL камеру и USB плату захвата с Dealextreme.

Захват экрана

Тут есть два варианта: установить FFSplit или использовать screen-capture-recorder с FFmpeg.
FFSplit использовать проще, т.к. у него есть удобный GUI, но он не работает под XP/2003.

Читайте также:  Как настроить роутер для подключения по lan

Если вы решили выбрать второй способ, то строка запуска FFmpeg будет выглядеть примерно так:

Аудио-поток можно захватить с virtual-audio-capturer.


Пример захвата экрана в приложении

Ретрансляция

Естественно, вы можете ретранслировать видео или аудио файл (или поток) FFmpeg на сервер. В примере ниже мы передаем MJPEG видео с удаленной камеры:

Но для таких целей более разумно использовать опцию push на самом RTMP-сервере, чтобы исключить промежуточное звено и вытягивать поток на самом сервере.


Какая-то веб-камера в Японии

Тюнинг, решение проблем

-preset имя У H.264 есть несколько наборов настроек соотношения компрессия/скорость: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow. Поэтому если вы хотите повысить производительность, стоит использовать:

-crf число непосредственно влияет на битрейт и качество. Принимает значения от 0 до 51 — чем больше, тем ниже качество картинки. По умолчанию 23, 18 — losless качество. Битрейт примерно удваивается при уменьшении CRF на 6.

-r число задает входной и выходной FPS. Для источников, с которых вы захватываете картинку, можно установить вместо -r -re, чтобы использовать «родной» FPS.

-rtbufsize число размер буфера реального времени. Если у вас постоянно появляются сообщения о переполнении буфера и отбрасывании кадров, вы можете поставить большой буфер (например, 100000k), однако это может увеличить задержку передачи.

-pix_fmt задает цветовую модель. Если у вас вместо картинки показывается черный квадрат, а звук работает, попробуйте поставить yuv420p или yuv422p.

-s ширинаxвысота входной и выходной размер картинки.

-g число насколько я понял, это максимальное число кадров между ключевыми. Если у вас FPS очень маленький, то можно поставить это значение поменьше, чтобы уменьшить задержку начала трансляции.

-keyint_min число минимальное число кадров между ключевыми.

-vf «crop=w:h:x:y» обрезать видео

-tune zerolatency «волшебная» опция уменьшения задержки трансляции. Что она конкретно делает я так и не нашел (-:

-analyzeduration 0 отключает анализ длительности, что помогает снизить задержку трансляции

Помимо рассмотренных выше параметров аудио вам может понадобиться -acodec copy в том случае, если ваш аудио поток не требует дополнительной перекодировки в MP3/AAC.

Пример: вещаем с веб-камеры с низкой задержкой без звука, рисуем в верхней части картинки текущее время

Плеер на сайте

Тут все просто. Поставьте на свой сайт один из популярных плееров, например Flowplayer или JW Player.

Пример подключения JW Player вы можете посмотреть на странице демо трансляции.

Что дальше?

С помощью модуля rtmp можно создать не только видеотрансляцию, но и видеочат, интернет-радио, простую платформу для вебинаров. Дерзайте!

Я рассмотрел лишь базовую функциональность nginx-rtmp-module и ffmpeg. Возможности у них гораздо шире, поэтому обратите внимание на документацию:
Блог nginx-rtmp-module
Wiki nginx-rtmp-module
Документация FFmpeg
Streaming Guide
x264 Encoding Guide
Filtering Guide

Источник

Как настроить rtmp поток с камеры

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

Сообщение отредактировал Олег Верещагин — 19.04.21, 14:15

Читайте также:  Не могу настроить роутер sagem

Некоторое время работала без нареканий, после попытки подключить к другому роутеру работать перестала.
Возврат на прежний роутер результатов не дает, ip и на авто и прописывал руками результата нет.
Что самое интересное пингуется, по потока ни на одну прогу не идет.
Кнопочки reboot нет.
Мож кто сталкивался, подскажите.

Сегодня прислали из Китая KaiCong SIP1215. Это мой первый опыт работы с http://www.aliexpress.com/ Впечатления от камеры не однозначные. Но в общем, с учетом цены (1 268,39 руб.) — нравится. Обзор, постараюсь выложить позже.

В сравнении с Xiaomi Yi Smart Wifi Cam Device:
Плюсы:
Более гибкая регулировка положения камеры (шаровая опора)
Правильная работа часов (нормальная настройка часовых поясов)
Есть отправка e-mail
Есть ночное видение
Есть Ethernet
Возможна простая настройка через web интерфейс при подключении через ethernet
Простая ручная регулировка объектива (крутил, работает)
Довольно навороченный, но вполне понятный web интерфейс со множеством настроек
Три светодиодных индикатора состояния камеры расположенных сзади, что не привлекает лишнего внимания.

Есть http с паролем (возможно скачивать файлы с помощью wget)
rtsp с паролем (соответственно, возможность работы с ivideon server)
onvif (не пробовал)
Регулировка чувствительности датчика движения позволяет включать запись даже при движении на улице человека (в моем случае съемка через окно первого этажа)
Расписание записи (пробую)

Минусы:
Устаревший процессор hi3510
БОльшие габариты
Угол обзора меньше (не на много)
Картинка менее четкая (оптика от Sony лучше, или что-то ещё)
При фокусировке (если не ошибаюсь) слышен щелчок, видимо механический светофильтр.
Не обнаружил работающего telnet или ssh, но они и не нужны, так как все остальное работает «из коробки».

Обзор есть тут
Еще один обзор аналогичного оборудования тут.

Выводы:
Очень хорошая, многофункциональная модель за свои деньги.

Сообщение отредактировал saltty — 28.08.16, 00:00

В общем не знал в какую тему написать, камера Suneyes SP-HM01WP вайфай, купил на алиэкспрес, на моём стареньком самсунге андроид программа вылетает осле 2х секунд открытия, а к компу никак не могу подключить, программа скачанная с сайта производителя видит камеру но картинки нет, может кто подскажет что можно сделать что бы видео появилось?

Источник

Как настроить трансляцию с камеры Trassir на Youtube

RTMP работает на камерах с прошивкой не ниже 4.х.х *

Разобраться с настройкой не составит никакого труда:

Шаг 1

Зарегистрируйте новый аккаунт на Youtube или войдите в свой существующий.

Шаг 2
Настройка youtube-аккаунта.

  • Нажмите «Создать прямую трансляцию».

  • Заполните название трансляции, указав подходящую для вас категорию

  • Выберите задержку трансляции: Стандартная задержка

Шаг 3

  • Скопируйте ключ трансляции и url из этих пунктов

Шаг 4
Настройка IP камеры

  • Зайдите на веб интерфейс камеры
  • Перейдите в пункт Cеть — RTMP
  • Активируйте чекбокс «Вкл»

Введите URL полученный на третьем шаге (URL трансляции + ключ трансляции)
пример URL rtmp://a.rtmp.youtube.com/live2/c1az-c2tm-c3tf-77m1-1p3z

Данную настройку, так же, можно осуществить через программу Trassir IPC Manager:

  • Подключитесь к камере с помощью программы
  • Перейдите в настройки камеры и в меню RTMP укажите требуемые параметры

Готово, трансляция началась!

Звук работает только при выставленном аудио кодеке AAC

* На момент написания статьи не все модели камер поддерживают данную функцию.

Подробности можно уточнить у Вашего менеджера DSSL или в технической поддержке DSSL

Читайте также:  Ваз 2109 инжектор не работает реле бензонасоса

Источник

Запускаем свой RTMP сервер для стриминга

Иногда YouTube или Twitch не подходят как стриминговая платформа — скажем, если вы пилите портал с вебинарами или контентом 18+, нарушаете авторские права или хотите максимально отгородить свою трансляцию от остального интернета. У них есть много альтернатив как в виде сервисов (те же минусы, недостаток контроля и непредсказуемая политика), так и в виде self-hosted решений. Проблема опенсорсных стриминговых проектов в том, что все они начинаются с крохотной связки из пары технологий, а затем отчаянно пытаются вырасти в сервис, добавляя сложные веб-интерфейсы, чаты, библиотеки стримов и в конечном счёте отдаляясь от исходной цели: дать миру инструмент, который по понятному мануалу позволит запустить свой сервер трансляций. Что с ним будет дальше, в какие системы будет встроена эта картинка — это только ваше личное дело, а самописный аналог твича с лагающими и отваливающимися сервисами и периодически валящимся билдом не нужен никому, кроме его разработчиков. Поэтому в этой статье мы разберём минимальную цепочку действий для запуска своего RTMP-сервера с плеером.

Структура

Здесь всё просто: за приём и кодировку потока из OBS отвечает RTMP модуль Nginx’a. Сконвертированный поток он выставляет наружу, где его подбирает HLS (HTTP Live Streaming) клиент в браузере и выдаёт уже готовую картинку в плеере.

Установка

При выборе сервера упор стоит обратить внимание на процессор. Я взял эпичный сервер с двумя ядрами и пробовал наращивать битрейт, чтобы определить граничные условия — на 11-12k нагрузка стала болтаться в районе 96-100%, так что для обработки действительно тяжёлого потока лучше взять мощности с запасом:

Нам понадобится Docker для установки контейнеризованного nginx-rtmp с FFmpeg и любой веб-сервер (включая тот же Nginx) для раздачи страницы с плеером. Я ставил на Ubuntu 20.04:

Запускаем контейнер c проброшенными портами:

Затем в OBS на клиенте указываем наш сервер с произвольным ключом потока (ключ = индентификатор стрима):

Теперь можно запустить трансляцию и удостовериться что поток пошёл, например, в демке hls.js или в любом другом плеере HLS.

Осталось настроить сервер. В nginx.conf укажите путь до вашей страницы:

В index.html просто скопипастим код из примера hls.js:

Теперь на 8080 порту нашего сервера раздаётся жутковатый мультик про зайца:

Остаётся только изменить путь на http://server_ip:8080/live/stream-key.m3u8 и идти смотреть трансляцию!

Нагрузку в реальном времени можно проверять командой docker stats:

Заключение

Размещая стриминговый клиент на своём сервере важно помнить, что весь трафик со всех зрителей будет проходить прямо через него — значит, если одновременный онлайн у вас будет больше 1-2 человек, стоит изучать способы распределения нагрузки (ведь транскодирвоание ощутимо давит и на CPU). Для запуска полноценного кластера есть энтерпрайзное (но опенсорсное) решение — SRS aka Simple Realtime Server (GitHub, 10k звёзд, огромная вики, сложная архитектура). В него стоит вникать, если вам стримы нужны для решения настоящих задач, а не чтобы поиграться с приватным видеопотоком.

На правах рекламы

Серверы в аренду для любых задач — это про наши эпичные! Все серверы защищены от DDoS-атак, автоматическая установка множества ОС или использование своего образа ISO. Лучше один раз попробовать!

Источник

Оцените статью