2012-02-15 16 views
20

Ho 2 video: HEADSHOT.MOV e SCREEN.MOV. Sono entrambi file di grandi dimensioni e sto cercando di ridurli (dimensioni, bitrate, ecc.) E posizionarli uno accanto all'altro nello stesso fotogramma molto ampio. Il risultato finale sarebbe che quando riproduci l'output_video.mp4, avresti un frame molto ampio con entrambi i video sincronizzati e la riproduzione alla stessa velocità.FFMPEG 2 Video transcodificati e affiancati in 1 frame?

ecco la versione sintatticamente corretta di quello che sto cercando di fare:

ffmpeg -i HEADSHOT.MOV -t 00:02:00 -acodec libfaac -ab 64k -vcodec libx264 -r 30 -pass 1 -s 374x210 -vf "movie=SCREEN.MOV [small]; [in][small] -an -r 30 -pass 1 -s 374x210 overlay=10:10 -t 00:02:00 [out]" -threads 0 output_movie.mp4 

Nell'esempio di cui sopra, ho anche cercato di impostare una durata filmato di prova per 2 minuti che solleva un'altra domanda, Qual è il modo migliore per gestire 2 film di lunghezza variabile (se sono vicini)?

Le risorse che ho trovato utile finora sono:

Multiple video sources combined into one e

http://ffmpeg.org/ffmpeg.html#overlay-1

Qualsiasi aiuto/consiglio è molto apprezzato. Sto avendo problemi con la sintassi FFMPEG! Grazie!

risposta

29

Il risultato si può ottenere con la combinazione di scala, pad e filtri overlay come segue:

ffmpeg.exe -i LeftInput.mp4 -vf "[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; 
    movie=RightInput.mp4, scale=iw/3:ih/3, fade=out:300:30:alpha=1 [right]; 
    [left][right] overlay=main_w/2:0 [out]" -b:v 768k Output.mp4 

Qui il primo video viene ridotto della metà, e imbottite alla sua dimensione originale. Il secondo video viene ridotto di due terzi e sovrapposto alla metà destra (area di riempimento) del primo.

Il video più corto può essere sbiadito; in caso contrario, l'ultimo fotogramma verrà visualizzato fino alla fine del video combinato.

Il bit rate di risultato può essere impostato con l'opzione -b:v. Inoltre, le dimensioni e le posizioni dei video possono essere specificate in pixel per i filtri pad, scala e overlay.

+0

Grazie Dmitry, questo è fantastico. Hai qualche suggerimento per cercare entrambi i video su un codice temporale comune? So che per [sinistra] posso usare -ss ma l'unico filtro che posso trovare per [right] è seek_point ma questo è solo un numero di secondi, non un riferimento al timecode. È possibile usare qualcosa come setpts = [punto specifico del punto di tempo]? Qualche altro consiglio per sincronizzare i due? – dcoffey3296

+6

Per passare i parametri di input diversi dal filtro filmato, utilizzare invece -filter_complex. È più flessibile di -vf. Ad esempio, lo stesso output può essere ottenuto con il seguente comando: 'ffmpeg.exe -i LeftInput.mp4 -i RightInput.mp4 -filter_complex" [0: v] scala = iw/2: ih/2, pad = 2 * iw: ih [sinistra]; [1: v] scala = iw/3: ih/3, fade = out: 300: 30: alpha = 1 [destra]; [sinistra] [destra] overlay = main_w/2: 0 [out ] "-b: v 768k Output.mp4' –

+5

Ed è possibile sincronizzare i tempi in qualche modo se un film inizia pochi secondi dopo? –