nginx-RTMP толкает из одного приложения в другое

Я пытаюсь протолкнуть поток RTMP с помощью модуля nginx-rtmp (настроенного после этого руководства) из одного приложения в другое. Минимальный пример моей конфигурации (nginx.conf) выглядит следующим образом.

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;

            push rtmp://localhost:1935/source/$name;
        }

        application source {
            live on;
            record off;
        }
    }
}

Моя настройка потоковой передачи (с OBS) указывает на передачу example.com/live с джекбоксом StreamKey ($name in nginx). Теперь при попытке просмотра потока в VLC, URL rtmp://example.com/live/jackbox работает, однако rtmp://example.com/source/jackbox не делает. Я неправильно понимаю, что push должен делать, или есть какие-то другие проблемы?

Если кому-то нужна дополнительная информация о настройке, пожалуйста, не стесняйтесь спрашивать.

2 ответа

Решение

Вы можете посмотреть его, если поместите в vlc именно это: "rtmp://example.com/source/$name". если вы хотите использовать $ name в качестве переменной, вам нужно полностью удалить его из rtmp push, чтобы ваша установка выглядела следующим образом:

rtmp {
server {
    listen 1935;
    chunk_size 4096;

    application live {
        live on;
        record off;

        push rtmp://localhost:1935/source/;
    }

    application source {
        live on;
        record off;
    }
}
}

Существует альтернативная реализация, которая позволяет более явно изменить имя потока, используя FFmpeg:

      ffmpeg -re -i rtmp://example.com/live/jackbox -c copy \
  -f flv rtmp://example.com/source/jackbox

Сначала вам нужно настроить два отдельных приложения:

      rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
        }

        application source {
            live on;
            record off;
        }
    }
}

Преимущества этого подхода:

  1. Вы можете указать имена потоков более четко, что позволит пересылать только определенные потоки.
  2. Вы можете пересылать несколько разных потоков и отправлять их на несколько разных серверов.
  3. Вы можете перекодировать потоки с высоким битрейтом.

Если FFmpeg кажется вам слишком сложным, вы можете использовать SRS Stack вместо FFmpeg в сочетании с Nginx. Вы можете обратиться к руководствам ниже для получения дополнительной информации:

SRS Stack — это решение с открытым исходным кодом, которое предлагает пользовательский веб-интерфейс, что делает его простым и удобным в использовании.

Другие вопросы по тегам