У меня есть работающий сервер nginx, который позволяет мне передавать потоковое видео с нашей мобильной производственной системы. У нас также есть радиостанция на отдельном сервере, и мы хотели бы транслировать на оба. Но я не могу заставить его работать, и я не могу получить какие-либо журналы или информацию об ошибках, чтобы объяснить, почему. Я пытался решить конфигурацию nginx и FFMPEG.
Я пробовал различные попытки, используя то, что, как мне кажется, я понимаю из других страниц онлайн:
exec_push FFREPORT=file=ffreport.log:level=48 ffmpeg -i $basename.flv -vn -acodec mp3 rtmp://source:********!!@xxx.xxx.xxx.180:8000/live;
Также попытался использовать простой restream в conf nginx:
application restream {
live on;
exec_push ffmpeg -i $basename.flv -vn -acodec mp3 rtmp://source:***********@xxx.xxx.xxx.180:8000/live;
# push server2:1935
}
Я использовал ту же информацию в Mixxx Live Broadcast Connection, чтобы получить подробности, думая, что я спрашиваю то же самое на сервере icecast2. Просто источником является сервер nginx.
Это полный конф на nginx
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
allow publish 127.0.0.1;
allow publish all;
allow play all;
record all;
record_path /usr/local/nginx/flv-streams;
record_unique on;
exec_record_done ffmpeg -i $basename.flv /usr/local/nginx/html/streams/$basename.mp4;
hls on;
hls_nested on;
hls_path /mnt/hls;
hls_fragment 1s;
hls_sync 1ms;
#exec_push FFREPORT=file=ffreport.log:level=48 ffmpeg -i $basename.flv -vn -acodec mp3 rtmp://source:*************@xxx.xxx.xxx.xxx:8000/live;
}
# Video on Demand
application streams {
play /usr/local/nginx/html/streams/;
}
# Restream
application restream {
live on;
exec_push ffmpeg -i $basename.flv -vn -acodec mp3 rtmp://source***************@xxx.xxx.xxx:8000/live;
# push server2:1935
}
}
Мне бы хотелось, чтобы те, кто может смотреть любую трансляцию с видео, но если они могут только слушать, как радио, я хочу, чтобы они слушали через наш радиоплеер. Это два разных потока на разных серверах.
В настоящее время я использую программное обеспечение для потоковой передачи на оба и хотел бы предотвратить это.
По моей собственной формулировке, возможно, не найдено ни одной идеи, как это сделать.
UPDATE
С помощью TBR мне удалось получить поток с сервера Nginx, идущего на новый сервер, на котором размещается icecast2. Однако не так, как ожидалось. Это делает это в 32 раза быстрее, поэтому не поток как таковой.
ffmpeg -i fcpr-1554651146.flv -vn -c:a mp3 icecast://source:password@10.0.0.0:8000/fcprlive.mp3
Однако мне интересно, не думал ли я об этом неправильно. В моем файле liquidsoap у меня есть этот код:
#!/usr/bin/liquidsoap
# Log dir set("log.file.path","/tmp/basic-radio.log")
# Music
myplaylist = mksafe(playlist("/home/offlineftp/playlist"))
#Live Source
set("harbor.bind_addr","0.0.0.0")
live = input.http("http://localhost:8000/fcprlive")
radio = fallback(track_sensitive=false, [live,plist])
# Stream it out
output.icecast(%mp3, host = "localhost", port = 8000,
password = "pass", mount = "/fcpr")
Стоит ли смотреть на использование LiquidSoap для извлечения потока из Nginx, когда он активен, и если нет сигнала, чем перейти на запасной вариант?