Вы можете извлечь список кадров с равными интервалами через ваше видео, используя Python и FFMPEG. Эта информация может быть использована для быстрого просмотра видео или создания трейлера к видео программными средствами — впоследствии вы можете соединить кадры вместе в короткое видео.
Предпосылки
Вам необходимо установить Python и FFMPEG. Я рассказываю, как это сделать, в своей статье Прямая трансляция в браузер с помощью FFMPEG CLI и Python.
Извлеките изображения из вашего видео
В примере кода для извлечения изображений для вашего видео используется модуль ffmpeg-python.
import ffmpeg
YOUR_FILE = 'sample-mov-file.mov'
probe = ffmpeg.probe(YOUR_FILE)
time = float(probe['streams'][0]['duration']) // 2
width = probe['streams'][0]['width']
# Set how many spots you want to extract a video from.
parts = 7
intervals = time // parts
intervals = int(intervals)
interval_list = [(i * intervals, (i + 1) * intervals) for i in range(parts)]
i = 0
for item in interval_list:
(
ffmpeg
.input(YOUR_FILE, ss=item[1])
.filter('scale', width, -1)
.output('Image' + str(i) + '.jpg', vframes=1)
.run()
)
i += 1
- У вас должно быть видео, из которого вы хотите извлечь изображения, в той же папке, что и пример кода, если вы хотите использовать образец как есть. Добавьте полное имя вашего видеофайла в место с надписью "sample-mov-file.mov".
- Теперь мы используем ffmpeg.probe для получения информации о вашем видео. Вам понадобится длина видео, чтобы мы могли выяснить, насколько далеко друг от друга должны быть изображения, которые мы извлекаем.
- Установите parts равным количеству мест, из которых вы хотите извлечь видео.
- Теперь я использую понимание списка, чтобы получить список интервалов в секундах в вашем видео.
- Я хочу начать получать изображения с конца каждого интервала, поэтому я использую цикл for, чтобы получить конец каждого интервала для моих изображений. Цикл будет выполняться и извлекать один кадр каждый раз, помечая его как ImageZ, где Z начинается с 0 и достигает общего количества запрошенных вами изображений.
- Вы можете объединить эти изображения в видео, используя этот пример кода: Собрать видео из последовательности кадров
Это все! Вы можете попробовать это с различными типами списков для интервалов, если хотите. Развлекайся. :)
Первоначально опубликовано на https://api.video.