Come ridimensionare un video per ridurlo con FFmpeg


103

È possibile ridimensionare i miei video per renderli più piccoli con FFmpeg?

Ho una dimensione video originale di 1024x576, ora voglio ridimensionare il video a 720x480 per soddisfare i requisiti.

Come posso fare questo?


ffmpegpuò essere deprecato, vedi qui e qui
nocciola circa natty

13
@nuttyaboutnatty I messaggi "deprecati" si applicavano solo ai vecchi, morti, falsi " ffmpeg" dal fork di Libav, non ffmpegda FFmpeg, che sono tornati nel 15.04.
Llogan,

Risposte:


165

L'esempio più semplice è questo:

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

L'uso del scalefiltro offrirà una maggiore flessibilità:

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

Questo -1dirà a ffmpeg di scegliere automaticamente l'altezza corretta in relazione alla larghezza fornita per preservare le proporzioni. -1può essere utilizzato anche per la larghezza se si fornisce una determinata altezza.


Un difetto di scala quando si utilizza libx264è che questo encoder richiede anche i valori e la scala può scegliere automaticamente un valore dispari con un conseguente errore: width or height not divisible by 2. Puoi dire alla scala di scegliere un valore pari per una data altezza (720 in questo esempio):

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

... o una data larghezza (1280 in questo esempio):

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

Nota che la tua build di ffmpeg potrebbe lamentarti del non riconoscimento -co delle -filteropzioni. Potrebbe anche non supportare scale. In tal caso dovresti usare un ffmpeg più recente, che puoi scaricare come build statica o compilare te stesso .


1
Ho provato ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(in ffmpeg versione 0.8.6-6: 0.8.6-0ubuntu0.12.10.1) ma ho ricevuto l'erroreUnrecognized option 'filter:v'
doug65536

6
Dopo aver scavato più volte nella pagina man di ffmpeg, ho scoperto che invece di -filter:v, l'opzione sembra essere stata cambiata in -vf.
doug65536,

2
@ doug65536 -filter:ve -vfstanno entrambi bene. La versione di Ubuntu che stavi usando è rotta e obsoleta, non è proprio quella di FFmpeg ffmpeg, ma il binario fornito da Libav (il fork di FFmpeg) con lo stesso nome.
Slhck,

1
@MightyPork probabilmente la tua build di ffmpeg è obsoleta - quali problemi accadono ?. Ad ogni modo, questo mi ha davvero aiutato (con ffmpeg version 2.4.10) a ridurre le dimensioni di alcuni video enormi per liberare spazio - grazie!
Wilf,

4
'-c' è l'abbreviazione di -codec, ': a' specifica i flussi audio, 'copia' specifica il codec copia, che copia i flussi (in questo caso audio) senza ricodifica. Fondamentalmente i flussi audio passeranno attraverso. Questo è comune quando si sta solo manipolando il flusso video.
Jimhark,

14

Uso i seguenti comandi per eseguire il riscalaggio di video e immagini. Per larghezza e altezza fisse -

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

e se vuoi mantenere le proporzioni devi solo dare l'altezza come -1 e ridimensionerà automaticamente in base alla larghezza -

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

Se si desidera ridimensionare in base alla dimensione di input Ad es. diciamo di ridurre la larghezza / altezza della metà che puoi fare-

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

NOTA :

iw : input width
ih : input height

La build statica può essere scaricata da - https://johnvansickle.com/ffmpeg/

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


Non funziona. Bloccato a handler_name: Sound Handle
Rushi M Thakker

Ho ottenuto una qualità video terribile con questo comando. Molto meglio se creo output.mp4, non avi. Quindi l'estensione è importante.
sekrett
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.