2015-10-06 3 views
0

Недавно двое моих коллег начали транслировать в Twitch и хотели создать настройку, в которой они могли бы переключаться между потоками «вживую» (например, A потоковая передача, хочет закончить, B запускает его поток, и нет прерывания). Twitch, очевидно, позволяет только одному человеку передавать поток на конкретный канал/поток и останавливать один поток. & мгновенно запускает другой, что обычно приводит к «простоям» ~ 10 секунд.Переключение между несколькими потоковыми входами с nginx rtmp

По этой причине я изучил настройку сервера, в котором оба потока могут обрабатывать два входа и вытеснять один поток на серверы Twitch ingest. Я проверил несколько руководств по настройке nginx и rtmp-аддонов для этой цели, однако я столкнулся с той же проблемой, что и один человек, способный передавать поток одновременно. Одна из возможностей, которую я предположил, заключалась бы в том, чтобы настроить клиентскую поточную программу, такую ​​как OBS или XSplit, настроенную на сервере, которая затем отображает потоки из входов nginx-rtmp и переключает сцены по мере необходимости, однако обе программы, по-видимому, требуют видеокарты для их живого " предварительного просмотра "и, следовательно, не работают на моем сервере.

Есть ли какая-либо конфигурация nginx-rtmp или другие клиенты (оптимально linux, но могут быть и окна), я мог бы использовать для объединения двух входных потоков RTMP в один выходной поток? Переключение между входами может выполняться также вручную, если необходимо, при условии, что он работает «вживую» и без прерывания вывода.

Заранее благодарен!

ответ

0

Это то, что я сделал с ffmpeg и YouTube Live Events, который также использует вход RTMP. Может работать с Twitch тоже:

  • тянуть два потока на сервер, по одному за раз, и подтолкнуть их в промежуточном формате, как mpegts к локальному порту UDP. В моем случае это уже H.264/AAC:

    ffmpeg -re -i <source1> -c copy -bsf:v h264_mp4toannexb udp://127.0.0.1:10000 
    

    затем убить и сделать сразу:

    ffmpeg -re -i <source2> -c copy -bsf:v h264_mp4toannexb udp://127.0.0.1:10000 
    
  • принести локальный поток, закодировать и толкать ее с помощью RTMP. Он будет ждать, если нет входного сигнала и управлять прерывности PTS/DTS:

    ffmpeg -re -i udp://127.0.0.1:10000 -c:v libx264 -r 25 -g 100 -c:a libfdk_aac -f flv rtmp://... 
    

 Смежные вопросы

  • Нет связанных вопросов^_^