Javascript 如何将图像预取到数组中并在浏览器中无限循环显示

Javascript 如何将图像预取到数组中并在浏览器中无限循环显示,javascript,jquery,Javascript,Jquery,有谁能指导我如何做到这一点。。我把它们列在指针上 linux二进制文件从本地连接的网络摄像机捕获帧 并将其存储在文件夹中。这是一个持续的过程。这个 图像以数字形式存储 我有一个Web服务器,它提供从网络摄像机接收到的最新图像的输出。这是一个PHP文件,它获取最近接收到的图像并打印出来 我现在有一个javascript,它每秒刷新一次图像,并显示在img标记中 虽然它可以工作,但输出速度很慢,每次更新一帧的速度很慢 我正在尝试以一种应该的方式快速显示图像 看起来像一部正在播放的mjpeg电影(并不

有谁能指导我如何做到这一点。。我把它们列在指针上

  • linux二进制文件从本地连接的网络摄像机捕获帧 并将其存储在文件夹中。这是一个持续的过程。这个 图像以数字形式存储

  • 我有一个Web服务器,它提供从网络摄像机接收到的最新图像的输出。这是一个PHP文件,它获取最近接收到的图像并打印出来

  • 我现在有一个javascript,它每秒刷新一次图像,并显示在img标记中

  • 虽然它可以工作,但输出速度很慢,每次更新一帧的速度很慢

  • 我正在尝试以一种应该的方式快速显示图像 看起来像一部正在播放的mjpeg电影(并不是说它一定要这么好) 正如我从论坛上了解到的,http确实有其开销)

  • 
    函数刷新(){
    document.images[“pic1”].src=“/latimage.php?camid=$selectedcamid&ref=“+new Date();
    setTimeout('refresh()',1000);}
    if(document.images)window.onload=刷新;
    

    如果需要将摄像头输出捕获到磁盘,我建议将摄像头输出捕获为视频(以3 FPS的速度),然后使用WebSocket将该视频文件流式传输到浏览器。这是一个这样做的例子。如果您愿意在服务器上运行nginx,那么这是一个通过WebSockets捕获和流式传输视频的完整解决方案


    另一方面,如果你的目标只是查看相机的输出,而不需要存储视频,那么你可以考虑使用WebRTC并在两端运行浏览器,然后只需挂起媒体流。换句话说,一个浏览器(可能是一个无头的变体)将与您的相机一起在系统上运行,并使用WebRTC将视频流传输到您的另一个浏览器。使用WebRTC,您可以获得更高的帧速率,并且您的带宽可能仍然比以低帧速率发送单个图像要低得多。

    +1了解深思熟虑的方法、目标和方法。希望聪明的头脑能想出你需要的东西。然而,我很好奇,这是为了什么项目。。。希望不是cam行业。这是使用流的一种观点:图像流将相当于每一帧都是关键帧,这意味着大量的数据。这是一个老生常谈的问题,它产生了一些解决方案,比如流格式,在流格式中,您时不时只需要一个关键帧,在关键帧之间只需要进行视觉更改。这使得非关键帧的大小更小,因为传输和解码(通常)的数据更少,这意味着性能。需要全帧传输,就像是以一个圆圈结束,回到了它曾经(现在)是一个问题的时代。解决方案:使用流方法(参见VLC等)。