Jak zmienić rozmiar wideo, aby zmniejszyć go za pomocą FFmpeg


101

Czy można zmienić rozmiar moich filmów, aby je zmniejszyć za pomocą FFmpeg?

Mam oryginalne wymiary wideo 1024 x 576, teraz chcę zmienić rozmiar wideo na 720 x 480, aby spełnić wymagania.

Jak mogę to zrobić?


ffmpegmoże być przestarzałe, patrz tu i tutaj
szalone o natty

13
@nuttyaboutnatty Wiadomości „przestarzałe” dotyczyły tylko starych, martwych, fałszywych „ ffmpeg” widelców Libav, a nie ffmpegFFmpeg, które powróciły w 15.04.
llogan

Odpowiedzi:


163

Najbardziej podstawowym przykładem jest to:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

Korzystanie z scalefiltra zapewni większą elastyczność:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

-1Powie ffmpeg aby automatycznie wybrać odpowiednią wysokość w stosunku do przewidzianej szerokości do zachowania proporcji. -1można również użyć do szerokości, jeśli podasz określoną wysokość.


Jednym minusem skali gdy przy użyciu libx264jest to, że koder wymaga nawet wartości i skala może automatycznie wybrać wartość uzyskaną w dziwny błąd: width or height not divisible by 2. Możesz powiedzieć skali, aby wybrała parzystą wartość dla danej wysokości (720 w tym przykładzie):

scale="trunc(oh*a/2)*2:720"

... lub daną szerokość (1280 w tym przykładzie):

scale="1280:trunc(ow/a/2)*2"

Pamiętaj, że twoja kompilacja ffmpeg może narzekać na brak rozpoznawania -club -filteropcji. To również może nie obsługiwać scale. W takim przypadku powinieneś użyć nowszej wersji ffmpeg, którą możesz pobrać jako kompilację statyczną lub samodzielnie skompilować .


1
Próbowałem ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(w wersji ffmpeg 0.8.6-6: 0.8.6-0ubuntu0.12.10.1), ale dostałem błądUnrecognized option 'filter:v'
doug65536 26.04.13

6
Po kilkukrotnym przejrzeniu strony podręcznika ffmpeg okazało się, że zamiast -filter:vtego opcja wydaje się być zmieniona na -vf.
doug65536,

2
@ doug65536 -filter:vi -vfoba są w porządku. Używana wersja Ubuntu jest zepsuta i nieaktualna - to nie jest tak naprawdę FFmpeg ffmpeg, ale plik binarny dostarczany przez Libav (rozwidlenie FFmpeg) pod tą samą nazwą.
slhck

1
@MightyPork prawdopodobnie twoja kompilacja ffmpeg jest nieaktualna - jakie problemy się zdarzają ?. W każdym razie pomogło mi to (z ffmpeg version 2.4.10) zmniejszyć rozmiar niektórych ogromnych filmów, aby zwolnić miejsce - dzięki!
Wilf

4
„-c” jest skrótem od -codec, „: a” określa strumień (strumienie) audio, „copy” określa kodek, który kopiuje strumień (w tym przypadku dźwięk) bez ponownego kodowania. Zasadniczo strumienie audio będą przechodzić. Jest to powszechne, gdy manipulujesz tylko strumieniem wideo.
jimhark

14

Używam następujących poleceń do przeskalowywania filmów i zdjęć. Dla stałej szerokości i wysokości -

ffmpeg -i input.avi -vf scale="720:480" output.avi

a jeśli chcesz zachować proporcje, po prostu podaj wysokość jako -1, a automatycznie zmieni rozmiar w zależności od szerokości -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

Jeśli chcesz skalować na podstawie wielkości wejściowej np. powiedzmy, zmniejsz szerokość / wysokość o połowę, co możesz zrobić-

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

UWAGA :

iw : input width
ih : input height

Kompilację statyczną można pobrać z - https://johnvansickle.com/ffmpeg/

Dokumentacja: https://ffmpeg.org/ffmpeg.html#filter_005foption


Nie działa. Utknąłem na handler_name: Sound Handle
Rushi M Thakker

Dzięki temu poleceniu mam straszną jakość wideo. Znacznie lepiej, jeśli utworzę output.mp4, a nie avi. Zatem rozszerzenie ma znaczenie.
sekrett
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.