Php FFMPEG视频缩略图

Php FFMPEG视频缩略图,php,video,ffmpeg,ffmpeg-php,Php,Video,Ffmpeg,Ffmpeg Php,我需要得到视频帧的中间取决于视频的持续时间 我设置$frame=$mov->getFrame480;只有在480帧时才能获得。我需要设置画面的中间部分。以下是代码: <?php $W = intval($_GET['W']); $H = intval($_GET['H']); $pic = ''.htmlspecialchars($_GET['file']).''; $name = 'wapadmin/'.str_replace('/','--',$pic).'.gif';

我需要得到视频帧的中间取决于视频的持续时间

我设置$frame=$mov->getFrame480;只有在480帧时才能获得。我需要设置画面的中间部分。以下是代码:

    <?php

$W = intval($_GET['W']);
$H = intval($_GET['H']);
 $pic = ''.htmlspecialchars($_GET['file']).''; 
$name = 'wapadmin/'.str_replace('/','--',$pic).'.gif';
$location = 'http://'.str_replace(array('\\','//'),array('/','/'),$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$name);

if(file_exists($name)){
header('Location: '.$location, true, 301);
exit;
}

$mov = new ffmpeg_movie($pic, false);
$wn = $mov->GetFrameWidth();
$hn = $mov->GetFrameHeight();


$frame = $mov->getFrame(480);

$gd = $frame->toGDImage();

if(!$W and !$H){
$a = "131*79";
$size = explode('*',$a);
$W = round(intval($size[0])); 
$H = round(intval($size[1])); 
}


$new = imageCreateTrueColor($W, $H);
imageCopyResampled($new, $gd, 0, 0, 0, 0, $W, $H, $wn, $hn);
imageGif($new, $name, 100);

header('Location: '.$location, true, 301);
?>

你所说的中间是什么意思?你是指一分钟剪辑中30秒的图像吗?还是第一帧的特定矩形部分?是的,在一分钟的视频中,可以使用30秒的帧简单逻辑首先需要得到视频的总持续时间,然后将其乘以0.5,现在可以得到总持续时间的一半。将帧设置为新的总持续时间。