4

我读过这个,但没有太多帮助。

我有一个名为videos的文件夹和另一个名为thumbnails的文件夹。我在视频文件夹中有许多 mp4 视频,并希望使用 ffmpeg 和 php 在第 4 秒将缩略图捕获到缩略图文件夹。

  1. 我在 windows whit php 5.3.8 和 Apache 2.2.21 上使用 Wamp server 2.2
  2. 我从ffmpeg 下载页面的FFmpeg Windows Builds部分下载了ffmpeg,并从此链接 下载了静态 32 版本。
  3. 我将 7z 文件提取到我的网站根目录
    ,这是我的 php 代码:

    $ffmpeg = "includes/ffmpeg/bin/ffmpeg";
    foreach(glob('files/videos/*.mp4') as $pathname){
      $filename = substr($pathname,13,strripos($pathname,'.mp4')-13);
      $thumbnail = 'files/thumbnails/'.$filename.'.jpg';
      exec("ffmpeg -i $pathname -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail");
    }
    

但什么也没有发生,缩略图文件夹总是空的!
- 我怎样才能知道我的服务器上是否安装了 ffmpeg?
- 我怎样才能让我的脚本工作?
请帮忙

4

3 回答 3

5

试试这个:

$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";
foreach(glob($videos) as $v_file){
    $fname = basename($v_file, ".mp4");
    $thmb = $ouput_path.$fname.'_tn.jpg';
    $cmd = "$ffmpeg -i $v_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thmb";
    $stat = system ($cmd);
}
于 2014-06-04T11:05:23.063 回答
2

尝试在命令中使用绝对路径,而不是依赖于 PATH ENV 变量:两者都exec()有效system()。解析路径定义。

/* Using Absolute paths */
$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";

foreach(glob($videos) as $video_file){

    $filename = basename($video_file, ".mp4");
    $thumbnail = $ouput_path.$filename.'_tn.jpg';
    $command = "$ffmpeg -i $video_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail";

    $status = system ($command);
/*or
    $status = exec($command);

    if ($status === false) {
        var_dump("ERROR: Conversion Failed!!!!");
    } else
        var_dump($status);
*/
}
于 2013-02-02T14:05:00.473 回答
0

我不允许添加评论,所以在这里(作为帖子)是我在处理这个问题时发现的:文件名中的空格阻止 ffmpeg 找到正确的文件。所以一种方法是更改​​文件名。

于 2018-11-27T21:58:06.083 回答