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

时间:2012-05-16 09:55:51

标签: php javascript ajax json slideshow

我有一个不断填充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个)。

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

提前致谢

2 个答案:

答案 0 :(得分:2)

这不是要走的路。您应该创建电影服务器端,然后将其流式传输到客户端。这是利用编解码器最基本功能(如压缩,关键帧等)的唯一方法,并且能够保证观众至少有一些一致性。

请参阅:Create Video File using PHP

答案 1 :(得分:1)

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

加载yahoo.com的主页并观看Firebug的“Net”面板,过滤后只显示HTTP请求图片,平均请求显示以下时间:

  • 1ms阻止
  • 1ms DNS查询
  • 125ms连接
  • 124ms等待
  • 116ms接收

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

您是否考虑过使用流媒体(视频)格式?在tutorials处有一些mediacollege.com以及有关this wikipedia page的更多信息。