Ben yukarıda bazı parçacıkları ve diğer bazı kaynaklar kullanılarak çalışma var, burada benim kod bazıları:
private function videoScreenshot($originalFile, $newFile, $percentage = 10)
{
// Check ffmpeg is configured
$config = Nutshell::getInstance()->config;
$ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;
if(!$ffmpeg_dir) return;
// Get the potision a percentage of the way in the video
$duration = $this->getVideoDuration($originalFile);
$position = ($duration * ($percentage / 100));
// save the screenshot
$command = "\"{$ffmpeg_dir}ffmpeg\" -i \"$originalFile\" -ss $position -f image2 \"$newFile\"";
shell_exec($command);
}
private function getVideoDuration($filename, $seconds = true)
{
$config = Nutshell::getInstance()->config;
$ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;
if(!$ffmpeg_dir) return;
ob_start();
$command = "\"{$ffmpeg_dir}ffmpeg\" -i \"$filename\" 2>&1";
passthru($command);
$result = ob_get_contents();
ob_end_clean();
preg_match('/Duration: (.*?),/', $result, $matches);
$duration = $matches[1];
if($seconds)
{
$duration_array = explode(':', $duration);
$duration = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];
}
return $duration;
}
Kendi sınıfında bu işlevleri kullanmak için gidiyoruz Açıkçası eğer, satırları değiştirmeniz gerekir
$config = Nutshell::getInstance()->config;
$ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;
kendi konfigürasyon seçenekleri ile.
Tam plugin ve framework github mevcuttur, belirli bir dosya bu pasajı dan here.