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.