Если надо выводить видео в браузер, как это делают другие готовые решения, то тут есть некоторые проблемы. Просто TS или MP4 через HTTP он кушать не хочет. RTSP он кушать не хочет. RTMP еще не пробовал, но тоже скорее всего кушать не будет. Получилось скормить только OGG (Theora + Vorbis). Для одновременной обработки произвольного количества таких потоков можно воспользоваться следующим скриптом vlm.conf:
new video1 broadcast enabled
setup video1 input rtsp://адрес вашей камеры
setup video1 output #transcode{vcodec=theo,vb=2500,scale=автоматически,acodec=vorb,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ogg,dst=:8080/video1}
control video1 play
new video2...
По умолчанию, т.е. без параметра "vb=", качество видео получается очень плохое, хотя по идее должно использоваться качество оригинала. Его нужно подкрутить под свои нужды.
После этого можно вот так его запустить:
vlc.exe -I dummy --vlm-conf vlm.conf
А в браузере смотреть вот так:
<html>
<body>
<video src="http://127.0.0.1:8080/Video1"></video>
</body>
</html>
Перекодирование это конечно не очень хорошо, т.к. если нет аппаратного ускорения, оно создает нагрузку на процессор. А если еще и нет аппаратного ускорения для отображения видео, что, как выяснилось, является большой проблемой в Linux, то это двойная проблема. У меня есть два одинаковых компьютера с одинаковыми видео-картами и под Windows 1080p видео не создает почти никакой нагрузки ни на процессор, ни на GPU, а вот под Linux я получаю примерно 30% нагрузки на одно видео. Единственное преимущество - нет тормозов, когда воспроизводятся сразу два 1080p видео, что аппаратное ускорение не тянет и начинает лагать, зато нагрузка на проц под Linux при этом доходит до 70%. Именно эта проблема и вынудила меня в итоге искать решение по подстройке размеров видео под размеры контейнера. Все равно два 1080p видео на экран сразу не влазят. Достаточно 540p.
Идеальным решением в данном случае является HLS. Но я все еще побаиваюсь его использовать. Сколько я не читаю описание этой технологии, все время вырисовывается такая картина, что там происходит непрерывное перекодирование видео на диск. А у меня не промышленный сервер с SSD RAID. У меня просто компьютер, у которого жесткий диск скорее всего помрет от постоянной высокой нагрузки.
Так что мое решение - статическое перекодирование 1080p видео в несколько наиболее популярных форматов 360p (1/3), 540p (1/2), 720p (2/3). Да, при этом жрется место на диске, зато прямой стриминг создает почти нулевую нагрузку на сервер.
UPD RTMP напрямую тоже не завелся.