Script per estrarre da file video ORIZZONTALE con caratteristiche note un videomosaico di 4 video visibile in TV

Dom, 04/11/2018 - 01:43
Ritratto di Sargon6

Script per estrarre da file video ORIZZONTALE con caratteristiche note un videomosaico di 4 video visibile in TV

Inviato da Sargon6 0 commenti

# questo script estrae dal file video videoIN.mp4 dalle caratteristiche note (Risoluzione: 1280x720 pixels, formato: 16/9 orizzontale) 4 diversi files video che poi usa per creare un mosaico risoluzione 1280x720 pixels, formato: 16/9 orizzontale
ffmpeg -i videoIN.mp4 -to 00:00:20 -vcodec copy -acodec copy video01.mp4 # Estrae i primi 20 secondi del file videoIN.mp4 
ffmpeg -i videoIN.mp4 -ss 00:00:20 -to 00:00:36 -vcodec copy -acodec copy video02.mp4 # Estrae dal 20esimo al 36esimo secondo del file videoIN.mp4 
ffmpeg -i videoIN.mp4 -ss 00:00:40 -to 00:00:53 -vcodec copy -acodec copy video03.mp4 # Estrae dal 40esimo al 53esimo secondo del file videoIN.mp4 
ffmpeg -i videoIN.mp4 -ss 00:01:00 -to 00:01:10 -vcodec copy -acodec copy video04.mp4 # Estrae dal 60esimo al 70esimo secondo del file videoIN.mp4 
 
ffmpeg \
	-i video01.mp4 -i video02.mp4 -i video03.mp4 -i video04.mp4 \
	-filter_complex " \
		color=s=1280x720:c=red [base]; \
		[0:v] setpts=PTS-STARTPTS, scale=640x360 [altosin]; \
		[1:v] setpts=PTS-STARTPTS, scale=480x270 [altodes]; \
		[2:v] setpts=PTS-STARTPTS, scale=480x270 [basssin]; \
		[3:v] setpts=PTS-STARTPTS, scale=640x360 [bassdes]; \
		[base][altosin] overlay=shortest=1:x=0:y=0 [tmp1]; \
		[tmp1][altodes] overlay=shortest=0:x=800:y=0 [tmp2]; \
		[tmp2][basssin] overlay=shortest=0:x=0:y=450 [tmp3]; \
		[tmp3][bassdes] overlay=shortest=0:x=600:y=320 \
	" \
	-c:v libx264 \
	outputScriptMosaicOrizz.mp4

# Spiegazione singole righe
# «ffmpeg \» Indica il comando a cui applicare i parametri che seguono
# «-i video01.mp4 -i video02.mp4 -i video03.mp4 -i video04.mp4 \» Elenca i video nell'ordine in cui compariranno nel mosaico
# «-filter_complex " \» Inizio del filtro composto da più elementi
# «color=s=1280x720:c=red [base]; \» Imposta dimensioni, colore, e [NomeInCodice] dello sfondo del file di output
# «[0:v] setpts=PTS-STARTPTS, scale=640x360 [altosin]; \» Prende il primo file video in imput, dall'inizio, ne fissa le dimensioni e ne dichiara il [NomeInCodice]
# «[1:v] setpts=PTS-STARTPTS, scale=640x360 [altodes]; \» Prende il secondo file video in imput, dall'inizio, ne fissa le dimensioni e ne dichiara il [NomeInCodice]
# «[2:v] setpts=PTS-STARTPTS, scale=640x360 [basssin]; \» Prende il terzo file video in imput, dall'inizio, ne fissa le dimensioni e ne dichiara il [NomeInCodice]
# «[3:v] setpts=PTS-STARTPTS, scale=640x360 [bassdes]; \» Prende il quarto file video in imput, dall'inizio, ne fissa le dimensioni e ne dichiara il [NomeInCodice]

# «[base][altosin] overlay=shortest=1:x=0:y=0 [tmp1]; \» Crea il video temporaneo [tmp1] sovrapponendo [altosin] a [base], specificando le coordinate X ed Y di [altosin]. [tmp1] avrà le dimensioni di [base], durata pari a quella del video in ingresso che dura meno, e audio di [altosin].
# «[tmp1][altodes] overlay=shortest=0:x=800:y=0 [tmp2]; \» Crea il video temporaneo [tmp2] sovrapponendo [altodes] a [tmp1], specificando le coordinate X ed Y di [altodes]. [tmp2] avrà le dimensioni di [base], durata inalterata, e audio di [altosin].
# «[tmp2][basssin] overlay=shortest=0:x=0:y=450 [tmp3]; \» Crea il video temporaneo [tmp3] sovrapponendo [basssin] a [tmp2], specificando le coordinate X ed Y di [basssin]. [tmp3] avrà le dimensioni di [base], durata inalterata, e audio di [altosin].
# «[tmp3][bassdes] overlay=shortest=0:x=600:y=320 \» Crea il file di output sovrapponendo [bassdes] a [tmp3], specificando le coordinate X ed Y di [bassdes]. Il file di output avrà le dimensioni di [base], durata inalterata, e audio di [altosin].

# «" \» Fine del filtro composto da più elementi
# «-c:v libx264 \» Imposta il codec Video del file che si vuole ottenere
# «outputScript01.mp4» Stabilisce il nome del file di output frutto delle operazioni precedenti

# se si pone «overlay=shortest=0» i video portanno avere lunghezza diversa.
# Per poter impostare il colore dello sfondo, mettere la riga «color=s=640x480:c=red [base]; \» al posto della riga «nullsrc=size=640x480 [base]; \»