Единственный способ сделать это на внешнем интерфейсе — это создать запрос AJAX именно тогда, когда вы устанавливаете атрибут src изображения. Запрос AJAX должен вызывать «полный» обратный вызов, когда поток mjpeg заканчивается.
Если вам удобно работать с node.js и/или веб-сокетами, вы можете в качестве альтернативы настроить серверную часть прокси-сервера mjpeg, которая обслуживает поток mjpeg и отправляет этому клиенту событие «закрыть» через веб-сокет, когда поток заканчивается. Таким образом, это будет выглядеть примерно так (имейте в виду, я до сих пор не понял, как именно bufferToJPEG будет анализировать один кадр jpeg из потока):
http.get('http://camera_ip/videostream.mjpeg', function(response) {
var buffer = "";
response.on('data', function(chunk) {
buffer += chunk;
clientSocket.emit('imageFrame', bufferToJPEG(buffer));
});
response.on('end', function() {
clientSocket.emit('imageEnd');
});
});
Проблема с этим (с которой я пытаюсь справиться в своем собственном проекте прямо сейчас) заключается в том, что вам нужно либо связать веб-сокет с каждым запросом изображения, либо испускать необработанные jpeg-файлы из потока mjpeg по мере их поступления через веб-сокеты ( вы можете визуализировать эти изображения с URI данных на внешнем интерфейсе).
Надеюсь, что немного помог - извините, что вам пришлось так долго ждать ответа.
редактировать: https://github.com/wilhelmbot/Paparazzo.js выглядит как хороший способ проксирование этого изображения так, как я описал выше.
person
zigzackattack
schedule
01.11.2013