Я хочу захватить некоторый кадр из видео, поэтому я использовал команду, как это:
ffmpeg -i MyVideo.mp4 -ss 1:20:12 -vframes 1 test-pic.jpg
но ffmpeg обрабатывает кадр с начала видео, поэтому эта команда слишком медленная. я исследовал и нашел статью о ключевом кадре, поэтому я пытаюсь извлечь ключевой кадр с помощью команды, подобной этой
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i MyVideo.mp4 -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
но эта команда также должна замедлить и захватить слишком много кадров.
Мне нужна команда Linux или C ++ или Python-код для захвата кадра, который не занимает много времени
ffmpeg вики государства относительно быстрого поиска:
Параметр -ss должен быть указан до -i:
ffmpeg -ss 00:03:00 -i Underworld.Awakening.avi -frames: v 1 out1.jpg
В этом примере будет создан один кадр изображения (out1.jpg)
третья минута с начала фильма. Вход будет
анализируется с использованием ключевых кадров, что очень быстро. Недостаток в том, что это
также завершит поиск на некотором ключевом кадре, не обязательно расположенном
в указанное время (00:03:00), поэтому поиск будет не таким точным
как и ожидалось.
Вы также можете использовать гибридный режим, сочетающий быстрый поиск и медленный (декодирующий) поиск, что является своего рода серединой.
Если вы хотите реализовать это в C / C ++, см. docs/examples
каталог ffmpeg, чтобы начать и av_seek_frame
,
Я недавно взломал вместе некоторый код C делать эскизы сам, который эффективно использует гибридный режим. Может быть полезно для вас или нет.
Здравствуйте, мистер Андерсон.
Я не знаком с использованием C ++ или Python для таких вещей. Я уверен, что это возможно (я мог бы получить хорошее представление о том, как это сделать, если бы я занимался исследованием в течение часа), но время, которое потребуется для реализации полного решения, может перевесить затраты времени на поиск лучшей программы захвата кадров , После небольшого поиска в Google, я придумал: