Может ли ImageMagick создавать миниатюры из видео?

11

Я пытаюсь извлечь миниатюры из видео через ImageMagick. Я нашел несколько образцов с их официального сайта, но он делает GIF, а не PNG. Я хочу твердую миниатюру, хотя.

Может ли он создать тот же вывод, что и с этой командой ffmpeg?

ffmpeg -ss 600 -i myVideo.mp4 -vframes 1 -s 420x270 Out.bmp
Juneyoung Oh
источник

Ответы:

18

Вы можете извлекать миниатюры из видео с помощью ImageMagick следующим образом ( отсюда - другой ответ утверждает, что ImageMagick использует ffmpeg «под капотом», поэтому я не знаю, будет ли это на самом деле быстрее, чем просто использование ffmpeg):

convert input.mp4[100] thumbnail.png

[100]говорит ImageMagick взять 100 - й кадр из input.mp4. Я проверил это на видеопотоке H.264 в контейнере MP4. Очевидно, что вы можете использовать любые параметры ImageMagick, которые вы хотите, в том числе деинтерлейсинг, как описано в вашей ссылке.


ImageMagick действительно для работы с отдельными изображениями; для видео, вы должны просто использовать ffmpeg. Очевидно, что здесь есть некоторое совпадение, поскольку вы имеете дело с отдельным кадром, но я бы сказал, что деинтерлейсинг - это скорее задача обработки видео.

Вы должны использовать фильтр yadif для деинтерлейсинга. Вы можете добавить это к своей существующей линии таким образом:

ffmpeg -ss 600 -i input.mp4 -vframes 1 -s 420x270 -filter:v 'yadif' output.png

при работе с фильтрами я предпочитаю использовать масштабный фильтр, а не -s:

ffmpeg -ss 600 -i input.mp4 -vframes 1 -filter:v 'yadif,scale=420:270' output.png
evilsoup
источник
Может быть, я неправильно понимаю вопрос, но ОП специально спросил, как добиться того, что ffmpegкоманда делает с ImageMagick. Не знаю, возможно ли это или нет ...
slhck
@slhck Я интерпретировал реальную проблему ОП как «получение красиво выглядящих миниатюр из чересстрочного видео» и предположил, что они просто пытались использовать неправильный инструмент для работы (т.е. получить миниатюру с помощью ffmpeg -> deinterlace с ImageMagick). Однако, если кто-нибудь опубликует способ сделать это с помощью ImageMagick, у них будет мое одобрение.
evilsoup
@evilsoup спасибо за ваш ответ. Я загрузил этот вопрос, потому что ffmpeg занимает слишком много времени, чтобы сделать миниатюру из видео. И я откуда-то слышал, что если я использую imagemagick, я могу сделать это быстрее. Это правда и возможно? Я также искал это, но нет никакого способа взять миниатюру из видео только с imagemagick. Извините за мой плохой английский.
Juneyoung Oh
@JuneyoungOh, взять эскизы с помощью ImageMagick действительно возможно, смотрите обновление к моему ответу. Я сомневаюсь, что это будет происходить быстрее, так как кажется (из моего поверхностного поиска в Google), что ImageMagick использует ffmpeg в качестве серверной части для работы с видео.
evilsoup
@evilsoup О, спасибо. Я думал, что это невозможно. Теперь я могу проверить, что быстрее: D большое спасибо.
Juneyoung Oh
6

ImageMagick выдает ffmpeg с помощью этой команды:

ffmpeg -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"

Таким образом, краткий ответ «нет» (поскольку он не делает это сам).

CND
источник