RTMP-сервер с использованием ffmpeg

Я хотел бы использовать куб Teradek, подключенный к широковещательной камере, для передачи на сервер, на котором работает ffmpeg, с открытым портом RTMP, и иметь повторный поток ffmpeg, который подается на декодер с использованием RTMP или RTSP.

Monaserver делает это, но мне нужно продублировать эту функциональность с помощью ffmpeg. Я бы использовал Cube в качестве сервера, за исключением того, что он может вещать где угодно, поэтому открытие портов в каждом месте, куда идет камера, не вариант. Наш декодер — это Teradek Slice. Буду очень признателен за любые другие предложения о том, как это сделать.

Спасибо!

Ответы (1)

Вы можете использовать FFmpeg в качестве RTMP-сервера следующим образом.ffmpeg -f flv -listen 1 -i rtmp://localhost:1935/live/app -c copy rtsp://YOUR_RTSP_HOST

Примечания:

  • -listen 1заставляет FFmpeg действовать как RTMP-сервер при использовании с протоколом RTMP
  • Использовать rtmp://localhost:1935/live/appв качестве URL-адреса RTMP-сервера в источнике
  • Вы можете установить любой путь воспроизведения rtmp://localhost:1935/any/thingи любой порт
  • Основным преимуществом этого способа является простота, недостатком является остановка сервера, если источник остановился или возникли ошибки кодирования.
  • Другой вариант — использовать nginx с модулем nginx-rtmp.
Отлично, большое спасибо. Если я хочу использовать такое приложение, как VLC, для получения потока с сервера, может ли ffmpeg прослушивать соединение и также выводить на локальный порт 1935?
Да, ffmpeg -f flv -listen 1 -i rtmp://localhost:8889/live/app -c copy -f flv -listen 1 rtmp://localhost:1935/live/appпросто установите разные порты для ввода и вывода
Еще раз спасибо, это именно то, что мне нужно. Во время тестирования я перепробовал почти все комбинации /live/app на Teradek Cube и различные приложения для потоковой передачи RTMP для iOS, чтобы проверить это, и ffmpeg не отвечает, пока работает monaserver. Является ли «приложение» ключом, и нужно ли включать live в URL-адрес клиента?
Не могли бы вы уточнить, как вы устанавливаете URL-адреса RTMP в Cube, приложениях iOS и Monaserver? Вы открываете необходимые порты? Вы можете установить любую дорожку /любую/вещь
Также сервер ввода FFmpeg запускается, когда он получает поток, а вывод начинается, когда он получает запрос.
В приложениях для потоковой передачи iOS я ввел только rtmp://serveraddress (с открытыми портами 1935 и 554) и подключил monaserver. В VLC я просто подключился к тому же адресу. Некоторым приложениям требовалось поле ключа потока, которое по умолчанию было активным. Когда ffmpeg слушает, независимо от того, какой URL-адрес вводится в качестве ввода, он не отвечает.
@Marware, верно ли удвоение -listen 1во втором комментарии? Второй применяется к выходному URL-адресу, поэтому я думаю, что нет смысла запускать прослушивающий сервер ... Может быть, он просто продублирован путем копирования и вставки команды?
@Piranna Правильно, так и должно бытьffmpeg -f flv -i rtmp://localhost:8889/live/app -c copy -f flv -listen 1 rtmp://localhost:1935/live/app
Можете ли вы обновить свой комментарий с исправлением?
Кроме того, почему вы обращаетесь -listen 1ко второму, а не к первому?