无法在 android "internet" 应用或 android chrome 中中止 MJPEG

Cant abort MJPEG in android "internet" app, or android chrome

我有一个 python/flask 应用程序可以将 mjpeg 视频发送到一个元素。 它在流媒体方面工作正常,但我在中止视频时遇到问题。要在我的 phone (android) 中止视频,我必须单击 link 到另一个页面,否则流会继续。

目前我正在使用 javascript 控制流。将 "src" 设置为来自摄像头的静态图像的 url,或视频流的 url。 但在 src-change 之间,我首先将其更改为“#”。

使用 flask 的一个问题是,当 1 个客户端正在接收流(使用生成器和收益)时,没有其他客户端无法与服务器通信。这可能是问题的根源?!

因此,使用 javascript 我使用以下代码控制流:

if (streaming==false){
    document.getElementById(img_id).src=C_vidsource;
    streaming = true;
} else {
    var currDate = new Date();
    document.getElementById(img_id).src="#";
    document.getElementById(img_id).src=C_statimage + "?" + currDate.getTime();
    streaming = false;
}

我用一个简单的

来控制它

我认为 android 的网络浏览器与我在计算机上使用的不同。它似乎在更改页面上的任何内容之前尝试下载内容。所以它让视频流继续播放,直到加载新图像。但是在流停止之前不会加载新图像。

有办法解决吗?

谢谢!

发布问题后我立即找到了解决方案。

我在两个 src 更改之间添加了延迟。 之后:

document.getElementById(img_id).src="";

我加了

sleep(1000);

而 sleep 是我创建的一个函数(很脏):

function sleep(ms){
    stoptime = Date.now() + ms;
    while(Date.now() < stoptime){ }
    return;
}

我想对于更长的睡眠来说,这不是一个好的解决方案,但它解决了我的问题,或者至少给了我一个关于要搜索什么的提示。