【问题标题】:Grab frame without downloading whole file?抓取框架而不下载整个文件?
【发布时间】:2012-01-13 02:23:27
【问题描述】:

这可以使用 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 技巧可能不起作用,因为文件可能已损坏?

还有其他想法吗?

【问题讨论】:

    标签: php curl ffmpeg ffmpeg-php


    【解决方案1】:

    是的,我相信这会奏效。对于视频文件,只要您确实有文件的开头,就应该可以进行这样的处理。 (例如,如果你只有一个文件的中间部分,它可能不会工作。)

    在命令行上,我使用 Curl 下载了 .FLV 文件的第一部分,然后使用 ffmpeg 抓取帧,它工作正常。在 PHP 中做同样的事情应该也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多