抓取框架而不下载整个文件?

时间:2012-01-10 00:53:44

标签: php curl ffmpeg ffmpeg-php

这可以使用php + ffmpeg吗?

ffmpeg-php具有以下功能:

  

能够从电影文件中抓取帧并将其作为图像返回   可以使用PHP的内置图像函数进行操作。这很棒   用于自动创建电影文件的缩略图。

我之前不想下载整个文件。 所以我想说我想要获得10%的电影画面:

首先让我们获取远程文件的大小:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_URL, $url); //specify the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$head = curl_exec($ch);

$size = curl_getinfo($ch,CURLINFO_CONTENT_LENGTH_DOWNLOAD);

然后使用curl只下载10%的.flv或.mov文件非常容易。

但使用ffmpeg-php的framegrab技巧可能无法正常工作,因为该文件可能已损坏?

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

是的,我相信这会奏效。对于视频文件,只要你有文件的开头,就可以进行这样的处理。 (例如,如果您只有中间文件的一部分,则可能无效。)

在命令行中,我使用Curl下载了.FLV文件的第一部分,然后使用ffmpeg抓取了帧并且它正常工作。在PHP中执行相同操作也应该有效。