Czy ImageMagick może tworzyć miniatury z wideo?

11

Próbuję wyodrębnić miniatury z wideo za pomocą ImageMagick. I znalazłem kilka próbek z ich oficjalnej stronie, ale to sprawia, GIF, PNG nie. Chcę jednak solidną miniaturę.

Czy można utworzyć takie same dane wyjściowe, jak w przypadku tego polecenia ffmpeg?

ffmpeg -ss 600 -i myVideo.mp4 -vframes 1 -s 420x270 Out.bmp
Juneyoung Oh
źródło

Odpowiedzi:

18

Możesz wyodrębnić miniatury z filmów za pomocą ImageMagick w ten sposób ( stąd - inna odpowiedź twierdzi, że ImageMagick używa ffmpeg „pod maską”, więc nie wiem, czy to rzeczywiście będzie szybsze niż użycie ffmpeg):

convert input.mp4[100] thumbnail.png

[100]mówi ImageMagick podjąć 100. klatkę z input.mp4. Przetestowałem to na strumieniu wideo H.264 w kontenerze MP4. Oczywiście możesz używać dowolnych opcji ImageMagick, w tym usuwania przeplotu zgodnie z opisem w linku.


ImageMagick jest jednak tak naprawdę przeznaczony do obsługi pojedynczych obrazów; do wideo powinieneś po prostu użyć ffmpeg. Oczywiście jest tu pewne nakładanie się, ponieważ masz do czynienia z pojedynczą klatką, ale powiedziałbym, że usuwanie przeplotu jest bardziej zadaniem przetwarzania wideo.

Do usuwania przeplotu należy użyć filtra yadif . W ten sposób możesz dodać go do swojej istniejącej linii:

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

podczas pracy z filtrami wolę używać filtra skalowania niż -s:

ffmpeg -ss 600 -i input.mp4 -vframes 1 -filter:v 'yadif,scale=420:270' output.png
zła
źródło
Może nie rozumiem pytania, ale OP konkretnie zapytał, jak osiągnąć to, co ffmpegrobi polecenie z ImageMagick. Nie mam pojęcia, czy to możliwe, czy nie ...
slhck
@slhck Zinterpretowałem rzeczywisty problem OP jako „uzyskiwanie ładnie wyglądających miniatur z wideo z przeplotem” i założyłem, że próbują po prostu użyć niewłaściwego narzędzia do zadania (tj. pobierz miniaturę za pomocą ffmpeg -> usuń przeplot z ImageMagick). Gdyby jednak ktoś opublikował sposób zrobienia tego za pomocą ImageMagick, otrzymałby moje poparcie.
evilsoup
@evilsoup dzięki za odpowiedź. Przesłałem to pytanie, ponieważ ffmpeg zajmuje zbyt dużo czasu, aby utworzyć miniaturę z wideo. I skądś usłyszałem, że jeśli użyję imagemagick, mogę to zrobić szybciej. Czy to prawda i możliwe? Przeszukałem go również, ale nie ma sposobu, aby wziąć miniaturę z wideo za pomocą tylko imagemagick. Przepraszam za mój słaby angielski.
Juneyoung Oh
@JuneyoungOh robienie miniaturek za pomocą ImageMagick jest rzeczywiście możliwe, zobacz aktualizację mojej odpowiedzi. Wątpię jednak, aby było to szybsze, ponieważ wydaje się (z mojego powierzchownego googlingu), że ImageMagick używa ffmpeg jako zaplecza do obsługi filmów.
evilsoup
@evilsoup O dzięki. Myślałem, że to niemożliwe. Teraz mogę sprawdzić, co jest szybsze: D wielkie dzięki.
Juneyoung Oh
6

ImageMagick wykonuje powłoki do ffmpeg za pomocą tego polecenia:

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

Krótka odpowiedź brzmi „nie” (ponieważ sama tego nie robi).

cnd
źródło