2013-05-06 11 views
6

Ho bisogno di elaborare in batch una serie di video per ridimensionare la loro altezza a 240 mantenendo le proporzioni uguali. Il comando che ottiene il lavoro quasi fatto è:Errore nel ridimensionamento di un video utilizzando i filtri libav

$ avconv -threads 4 -ss 0.0 -i input.avi \ 
-map 0:0,0:0 -map 0:1,0:1 -vf "scale=-1:240" -y -f mpegts \ 
-async -1 -vcodec libx264 -vcodec libx264 -flags2 +fast \ 
-flags +loop -g 30 -bufsize 1024k \ 
-b 200k -bt 220k -qmax 48 -qmin 2 -r 20 -acodec libmp3lame \ 
-ab 44k -ar 44100 -ac 2 output.ts 

La parte interessante, come potete vedere, è -vf "scale=-1:240"

Questo funziona sul video in cui la larghezza uscita scalata si rivela essere un numero pari . In caso contrario, viene visualizzato il seguente messaggio di errore:

[libx264 @ 0x7fc4f8821e00] width not divisible by 2 (341x240) 

Come si supera questo problema?

Modifica: Come da questo link, ho provato a utilizzare che emette un filmato ma la qualità video risultante è davvero scarsa.

Modifica # 2: Questo è non è un duplicato come è contrassegnato in modo errato. Questa domanda è stata pubblicata molto prima rispetto all'altra.

+0

Per quanto riguarda il duplicato non importa quale domanda è più vecchio. In genere, la domanda con meno voti viene contrassegnata come duplicata. – LordNeckbeard

+0

@LordNeckbeard Anche questo ha senso, ma contraddice la definizione di SO nella casella sopra, in particolare - "contrassegnato come duplicato ... Questa domanda è stata già chiesta e ha già una risposta". –

+0

Sì, questa domanda è stata posta molte volte da più utenti. Discutere su chi è il primo è una perdita di tempo. La soluzione è la stessa per tutti: come effetto collaterale alcuni saranno contrassegnati come duplicati indipendentemente dall'ordine temporale. Ancora più importante: 1) Le persone non cercano prima di fare domande. 2) Le persone chiedono domande fuori tema che non hanno nulla a che fare con la programmazione: Stack Overflow è solo per domande di programmazione. – LordNeckbeard

risposta

8

Aggiornamento; ora è possibile utilizzare:

-vf scale=-2:240 

Is there a good list of mp4 supported resolutions and a way to have ffmpeg calculate the width after modifying by set height ratio?


Il link dice in realtà:

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

che scala correttamente l'altezza per un numero pari, se si vuole scalare il larghezza è necessario utilizzare questo idioma:

-vf scale="trunc(oh*a/2)*2:240" 
#    ^
#    /
#  notice --- 

la matematica dietro di esso:

iw ow 
-- = -- 
ih oh 

ow = (iw * oh)/ih 
ow = oh * a 
+0

Cosa significano queste abbreviazioni? – Xeoncross

+0

@StevenPenny Questo è assolutamente giusto. Naturalmente le proporzioni devono essere moltiplicate e non divise. Grazie –