Стоит задача: получение потока от источника (отдает кодек H264), перекодирование в формат WebM (VP8, Vorbis) и раздача realtime на веб-странице. Использование сторонних плееров и плагинов не допускается (вывод в тег <video>). Критичен вопрос задержек видео, по сути - это живая трансляция по схеме «один ко многим».
Гуглил и пробовал различные технологии, по тем или иным причинам они не устраивают (HLS, DASH, nginx + rtmp_module), пробую сейчас ffmpeg с захватом /dev/video0 (для тестирования локально):
ffmpeg -i /dev/video0 -c:v libvpx -f webm -s 640x480 -an -
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'video/webm',
'Connection': 'keep-alive'
});
ffmpeg.stdout.pipe(res);
}).listen(httpPort);
<video autoplay preload="none">
<source src="http://<IP-address>:<Port>/stream" type='video/webm;codecs="vp8,vorbis"' />
</video>
Вопрос: возможно ли с помощью ffmpeg решить эту задачу? Если да, то какие опции нужно подобрать, чтобы минимизировать задержку и приблизить выходной видеопоток к realtime? Если нет, то что можно использовать в данном случае?