Вы можете нарезать фрагмент видео с помощью этой команды (1):
ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [output_file]
И вы можете получить продолжительность видео с помощью этой команды (2):
ffmpeg -i <infile> 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//
Такпросто используйте ваш любимый язык сценариев и сделайте это (псевдокод):
* variable start = (max_duration - 60) / 2
* execute system call command (1) with
[start_seconds] = variable start # (starts 30s before video center)
[duration_seconds] = 60 # (ends 30s after video center)
[input_file] = original filename of video
[output_file] = where you want the 60-second clip to be saved
В php это будет:
$max_duration = `ffmpeg -i $input_file 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//`;
$start = intval(($max_duration - 60) / 2);
`ffmpeg -sameq -ss $start -t 60 -i $input_file $output_file`;