Я пытаюсь осуществлять потоковую передачу из 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/