Ввиду выхода пиртуба с возможностью трансляций - рашил потренироваться. Что транслировать? Что есть. Видеокамеры наблюдения проще всего. Чем транслировать? Конечно из консоли - не ставить же машину с OBS.
Ну и вот. Получилось. Как всегда.
Что мы имеем? Камеры по периметру охраняемого объекта и видеонаблюдение на основе Zoneminder.
Peertube хочет на вход RTMP со звуком. Zoneminder умеет отдавать mjpeg поток. Без звука, разумеется.
Теперь понеслось.
ffmpeg умеет отдавать по RTMP но, как выяснилось, не умеет правильно обрабатывать fps из mjpg потока. Зато умеет подмешивать звук.
vlc прекрасно умеет обращаться с mjpg потоками но не умеет отдавать в rtmp.
В итоге путь видеопотока вышел извилист и полон приключений.
Видеокамера купленная неисправной на распродаже в леруе (rtsp h264) ---- vpn машинка на orangePi -- в зоопарк виртуалок на толстом интернете (далее всё в виртуалках) --- zoneminder (h264 to mjpeg)-- vlc (перекодирует mjpeg в h264 и транслирует поток по сети в локалхост) -- ffmpeg (принимает по сети h264, добавляет к нему звуковую дорожку из радио Чипльдук , собирает енто всё в flv и отдаёт в пиртуб по rtmp) -- Peertube
Вышло такое вот
#^https://video.fhtagn.org/videos/watch/07e84ded-3b3d-4480-967f-def15b8526bbНа данный момент пока нет отслеживалок целостности потока и оно часто падает. Но я ещё помню как оно делается и скоро допишу. В целом - работает. А про пиртуб поподробнее расскажу в следующем выпуске. Крутая штука.
Интересующимся - построчно
cvlc "http://адрес_зонемайндера/zm/cgi-bin/nph-zms?mode=jpeg&maxfps=30&monitor=18&user=юзер&pass=пороль" --sout '#
transcode{vcodec=h264,venc=x264{preset=veryfast,crf=23},vb=3000}:std{access=http,mux=ts,dst=:8085}'
ffmpeg -re -i "http://127.0.0.1:8085" -i "http://radio.4duk.ru/4duk128.aac" -c:v copy -c:a copy -bsf:a aac_adtstoasc -f flv "rtmp://video.fhtagn.org:1935/live/ключ_потока"