Как транслировать с FFmpeg и NGINX RTMP - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь осуществлять потоковую передачу из OBS (открытого программного обеспечения для трансляции) на моем Windows P C на NGINX + RTMP, также установленном на том же P C. Я установил битовую скорость в 20 000 Кбит / с в OBS, которая будет основной битрейтом для нескольких потоков, которые я собираюсь настроить в NGINX.

Я хотел бы иметь возможность выполнять потоковую передачу в NGINX, а затем на лету использовать FFmpeg для перекодирования потока в соответствии с потоковым сайтом, на который я намерен вещать, например Twitch.tv.

Я могу просматривать свой поток через VL C, если я использую сетевой путь rtmp: // localhost / live / test. Тем не менее, когда я нахожусь на сайте инспектора Твитча, чтобы посмотреть, будет ли мой поток через него, я ничего не получаю. Я понятия не имею, работает ли мой FFmpeg или что-то не так с моей конфигурацией NGINX ниже.

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

nginx .conf

#user www-data;
worker_processes  1;

events {
    worker_connections  1024;
}

http { 
    server_tokens off;

    include mime.types;
    default_type application/octet-stream;
    sendfile off;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;

        # make a internal server page and put it in html
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

rtmp {
    server {
        listen 1935;
        chunk_size 8192;

        application live {
            live on;
            #interleave on;
            #wait_video on;
            record off;

            # Twitch
            exec_push "D:\Users\Will\Downloads\ffmpeg\bin"
                -i rtmp://localhost/source/$name 
                -c:v libx264 
                -c:a copy 
                -preset veryfast 
                -profile:v high 
                -level 4.1
                -x264-params "nal-hrd=cbr" "opencl=true"
                -b:v 8000K 
                -minrate 8000K 
                -maxrate 8000K
                -keyint 2
                -s 1920x1080
                push rtmp://live-lhr03.twitch.tv/app/STREAM_KEY;
        }
    }
}

Большое спасибо

ОБНОВЛЕНИЕ 1

Ради простоты я тестирую OBS, NGINX и FFmpeg на одном физическом компьютере, Windows P C. Как только все заработает, я перенесу NGINX и FFmpeg на мой Linux P C.

Я использую предварительно скомпилированную версию NGINX с запеченным RTMP-модулем. I ' Мы также загрузили последние библиотеки FFmpeg, для которых я установил переменную окружения пути в Windows, чтобы команды FFmpeg можно было вызывать в CommandPrompt / PowerShell.

Вот путь, по которому я пытаюсь пойти: -

OBS кодирует x264 со скоростью 20 000 Кбит / с, и его назначение - RTMP-приложение в NGINX, называемое «живым». Отсюда я хочу закодировать один поток, полученный из OBS, в несколько потоков с меньшей пропускной способностью, чтобы я мог соответствовать требованиям потоковой службы, таким как, например, Twitch и Mixer.

В конце параметров FFmpeg я должен sh вывод напрямую на Twitch или на выход FFmpeg и отправку обратно во второе RTMP-приложение на NGINX, а затем pu sh на Twitch?

Одно из преимуществ возврата вывода FFmpeg обратно в NGINX, прежде чем отправиться в службу внешнего потока, я могу открыть транскодированный поток FFmpeg через проигрыватель, поддерживающий RTMP, например, например, VL C, что позволяет мне просматривать сжатый вывод.

Другой вопрос, который у меня есть, это Можно ли поместить параметры FFmpeg в отдельные строки или их нужно объединить в одну строку?

Это действительно хороший сайт, на который я ссылаюсь

https://blog.twitch.tv/en/2017/10/10/live-video-transmuxing-transcoding-f-fmpeg-vs-twitch-transcoder-part-i-489c1c125f28/

1 Ответ

0 голосов
/ 27 января 2020

Ваша команда ffmpeg пытается подключиться к rtmp: // localhost / source Но вы называете приложение «живым», а не «исходным»

Кроме того, не отправляйте уровень вручную, если вы действительно не понимаете как работают уровни, и какие существуют ограничения. X264 также автоматически выберет лучший уровень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...