Как я могу динамически обновлять потоковое IMG с колбой-socketio? - PullRequest
0 голосов
/ 12 января 2019

У меня есть клиент Python с веб-камерой и сервер Python. Я хочу использовать свой фрейм камеры на моем сервере динамически, поэтому хочу посмотреть фрейм в браузере с сервером python socketio.

Я попытался отправить фрейм на сервер python socketio и обновить им img src, но не знаю, как обновить тег img src полученными данными.

Что я должен исправить, чтобы обновить img, полученный от клиентской веб-камеры на сервере socketio? спасибо.

клиент / test.py

...
socketIO = SocketIO(host, port)
camnamespace = socketIO.define(CamNamespace, namespace)
video = cv2.VideoCapture(0)
success, frame = video.read()
encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),90]
result, imgencode = cv2.imencode('.jpeg', frame, encode_param)
stringData = imgencode.tostring()
data=stringData
while True:
    camnamespace.emit('dash_event', {'data':str(data)})
...      

Веб-сервер / шаблоны / index.html

    ...
    <img id="bg">
    <script>
        var myroom = "test";
        var namespace = "/live";

        $(document).ready(function() {
            var socket = io.connect('http://' + document.domain 
                        + ':' + location.port + namespace);
            socket.on('connect', function() {
                socket.emit('join',{room:myroom});
            });
            socket.on("livedash", function(msg) {
                data = msg['data']
                $("#bg").attr("src", '--frame\r\n'+ 'Content-Type: image/jpeg\r\n\r\n' + data + '\r\n\r\n');
            });
        });
    </script>
    ...

Веб-сервер / sock_namespace.py

...
class MyNamespace(Namespace):
    def on_dash_event(self, message):
        emit('livedash',{'data':str(message['data']) },room="test")
...
...