Итак, задача: с N видеокамер покадрово снимается при помощи ffmpeg видеопоток и обрабатывается. В циклическом буфере в разделяемой памяти эти картинки постоянно висят (а также туда складывается дополнительная информация + индекс последнего сохраненного изображения). Нужно клиенту (firefox) вывести в веб-странице это видео со скоростью, которую позволяет канал.
Как это делалось раньше: CGI посылал jpeg'и с разделителем, которые отображались в <img>, обновляемом по таймеру. Это было не очень хорошо + требовало постоянно перезагружать веб-страничку (т.к. браузеры до сих пор текут!).
Хочется: отображать видео, которое не будет приводить к утечке памяти в браузере. Но не представляю, как это реализовать.
Клиент постоянно соединен с сервером через вебсокет (по нему идут асинхронные команды и ответы сервера), т.е. можно писать в вебсокет команду «дай мне следующий кадр» и забирать его как-нибудь.
Но как по-человечески отображать, чтобы не текла память браузера? Если опять передавать jpeg'и (пусть через вебсокет) и в канве их рисовать, то память будет течь (т.к. до сих пор в браузерах не реализовали сборщик мусора).
На ум приходит псевдо-html5-streaming. Но не приходит, как сделать.
Подкиньте идей, пожалуйста.