有什么方法可以从Flask App获取json流数据吗?

时间:2020-07-06 09:40:13

标签: javascript ajax flask xmlhttprequest video-streaming

我正在尝试以某种坐标流式传输图像。

但是在前端,我遇到了一些问题。

后端:

@self.app.route('/get_stream/<int:deviceID>', methods=['GET', 'POST'])
@cross_origin()
def get_stream(deviceID):
    return Response(stream_with_context(gen_frame(deviceID)), mimetype="application/json")

def gen_frame(deviceID):
    while True:
        frame = self.frame_dict[deviceID]["image"]
        coord_boxes = self.frame_dict[deviceID]["coord_boxes"]
        ret, jpeg = cv2.imencode('.jpg', frame)
        base64_frame = base64.b64encode(jpeg)
        base64_string = base64_frame.decode('utf-8')
        raw_respond = {'image': str(base64_string), "coord_boxes": coord_boxes}
        yield json.dumps(raw_respond)

前端:

var xmlhttp = new XMLHttpRequest(),
    method = 'GET',
    url = 'http://localhost/get_stream/18451523230';

    xmlhttp.open('POST', url, true);
    xmlhttp.onprogress = function (event) {
        console.log(event.currentTarget.response)
        var res = JSON.parse(event.currentTarget.response);
        $('#img').attr('src', `data:image/png;base64,${res.image}`).css('border', '2px solid black');
    };
    xmlhttp.send();

但是响应jsons( console.log(event.currentTarget.response))是堆积/累积的:

第一个:

{"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAADAAMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8svGHxv8Aip4/8X6v498Y+L5tQ1fXdVudR1S9ngi3TXM8rSyMAFCou92wigIgwqqqqACiiuenlOVUoKEMPBRSskoRSSWyStsfTYbjvjfB4eGHw+aYiFOCUYxjXqqMYpWSSUrJJaJLRLRH/9k=", "coord_boxes": []}

下一步:

{"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAADAAMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8svGHxv8Aip4/8X6v498Y+L5tQ1fXdVudR1S9ngi3TXM8rSyMAFCou92wigIgwqqqqACiiuenlOVUoKEMPBRSskoRSSWyStsfTYbjvjfB4eGHw+aYiFOCUYxjXqqMYpWSSUrJJaJLRLRH/9k=", "coord_boxes": []}{"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAADAAMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8svGHxv8Aip4/8X6v498Y+L5tQ1fXdVudR1S9ngi3TXM8rSyMAFCou92wigIgwqqqqACiiuenlOVUoKEMPBRSskoRSSWyStsfTYbjvjfB4eGHw+aYiFOCUYxjXqqMYpWSSUrJJaJLRLRH/9k=", "coord_boxes": []}

...

那么我该如何解决,我只想要最后一个。谢谢!

0 个答案:

没有答案