Использовать FFMpeg для получения среднего кадра видео?

Я не много кодировал с IntellijIdea, но в IntellijIdea вы можете видеть, где начинается блок кода в скобках ( if, try / catch, цикл и т. Д. ) и где заканчивается.

В Eclipse (я кодирую в Eclipse 3.2) вы можете идентифицировать блок только вручную.

9
задан Jon Dewees 30 June 2009 в 23:35
поделиться

2 ответа

Это можно упростить, но вот какой-то старый PHP-код, который у меня лежал, должен помочь. (Добавьте местоположение в ffmpeg, если оно не находится на вашем пути)

$output = shell_exec("ffmpeg -i {$path}");
preg_match('/Duration: ([0-9]{2}):([0-9]{2}):([^ ,])+/', $output, $matches);
$time = str_replace("Duration: ", "", $matches[0]);
$time_breakdown = explode(":", $time);
$total_seconds = round(($time_breakdown[0]*60*60) + ($time_breakdown[1]*60) + $time_breakdown[2]);
shell_exec("ffmpeg -y  -i {$path} -f mjpeg -vframes 1 -ss " . ($total_seconds / 2) . " -s {$w}x{$h} {$output_filename}");   
11
ответ дан 4 December 2019 в 11:43
поделиться

FFmpeg помогает вам получить частоту кадров и длину видео, поэтому вы можете умножить одно на другое и разделить на 2, чтобы получить номер среднего кадра.

т.е. для 30 секундное видео с частотой 15 кадров в секунду: 30 * 15 = 450/2 = 225, что означает, что вам нужно захватить 225-й кадр.

4
ответ дан 4 December 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: