从单独下载的 JPEG 创建影片时帧速率太慢

Frame rate too slow when creating movie from individually-downloaded JPEGs

本文关键字:帧速率 创建 单独 下载 JPEG      更新时间:2023-09-26

我有一个目录,里面不断填充jpg图像。我想像在网页中的电影一样显示这些图像。

我尝试的是:

function slideit() { 
 $.get("test.php", function(show) { if(show != "") { 
 document.getElementById("movie").innerHTML="<img src='"data:image/jpg;base64," + show + "'" />", 
 setTimeout('slideit()', 0) } } ); };

该 PHP 文件是

function getrunpic()
    {
    $file=trim(shell_exec('ls directory | sort -n | grep jpg | head -1'));
    $file="directory/".$file;
    $imagedata = file_get_contents($file);
    $pic = base64_encode($imagedata);
    unlink($file);
    return $pic;
    }
echo getrunpic();

我也尝试过使用 JSON 编码。

问题是从php到javascript的数据传输时间太长了。(每秒仅显示约8张照片;我需要 25)。

没有人有让这个过程更快的想法?

提前致谢

这不是

要走的路。您应该在服务器端创建电影,然后在客户端流式传输它。这是利用编解码器的最基本功能(如压缩、关键帧等)并能够保证至少对查看器具有一定一致性的唯一方法。

请参阅:使用 PHP 创建视频文件

我不认为这将是"从 php 到 javascript"的转移 - 它更有可能是从服务器到浏览器的转移导致问题。要每秒发出 25 个单独的 HTTP 请求,每个请求需要在 40 毫秒内完成(尽管对于并发浏览器连接和重叠请求,您可能会稍微长一点)。

加载 yahoo.com 的主页并查看 Firebug 的"网络"面板,过滤后仅显示对图像的 HTTP 请求,平均请求显示以下次数:

  • 1ms 阻塞
  • 1 毫秒域名解析查找
  • 125毫秒连接
  • 124毫秒等待
  • 116毫秒接收

。这意味着您总是很难使用单个请求获得 25 帧/秒。

您是否考虑过使用流媒体(视频)格式?mediacollege.com 有一些教程,在这个维基百科页面上有更多信息。