Mam 2 filmy, jeden ma 500 pikseli na 100 pikseli (tylko przykład, jak coś nagranego bokiem na iPhonie). I filmy o wymiarach 1980 x 400 pikseli. Potrzebuję przekonwertować wideo z zachowaniem proporcji. Wiem o filtrze skali -vf, takim jak -vf scale=-1:320, ale to bierze tylko szerokość i odpowiednio skaluje wysokość. Mój film o wymiarach 500 x 100 miałby 320 pikseli szerokości i 1600 pikseli wysokości. To źle, muszę mieć maksymalnie 500 pikseli wysokości i maksymalną szerokość 320 (tylko przykładowe rozmiary).

Jak skonfigurować funkcję skalowania -vf, aby to zrobić?

Używam najnowszego ffmpeg 0.11

Przypomnijmy: skaluj dowolny film do maks. 500 wysokości : 320 szerokości, zachowując proporcje

6
Darius 28 sierpień 2012, 08:09

2 odpowiedzi

Najlepsza odpowiedź

Aby uniknąć kodowania czarnych pasów do wideo (co robi opcja -aspect), możesz zamiast tego przekazać kilka wyrażeń do filtra skali wideo, w ten sposób:

-vf scale='if(gt(a,320/500),320,-1)':'if(gt(a,320/500),-1,500)'

Zauważ, że pojedyncze cudzysłowy muszą zostać odebrane przez ffmpeg, więc jeśli uruchamiasz polecenie w powłoce, musisz je zmienić (np. za pomocą podwójnych cudzysłowów wokół całego argumentu scale=...).

(Źródło: ffmpeg trac)

8
markshep 12 październik 2013, 17:31

Nie musisz używać skali vf. Po prostu podaj -s szerokośćxwysokość i skaluje się do tego rozmiaru. Dla proporcji użyj -aspect Np. Mam plik 320x240, który chcę przekonwertować do formatu 360x240 z czarnymi paskami z boku

ffmpeg -i input.mp4 -acodec copy -vcodec mpeg4 -s 360x240 -aspect 4:3 out.mp4

Otóż to.

2
av501 28 sierpień 2012, 08:41