022 FFmpeg – Trasformare varie immagini .jpg in un video con risoluzione 1280:720 (HD Ready)

9 Gennaio, 2022 (18:13) | ffmpeg, Linux | By: sargonsei

#!/bin/bash
# ISTRUZIONI per unire più immagini in un video con risoluzione 1280:720 (HD Ready).
# by SARGONSEI Massimo
# a) Creare un'apposita cartella di lavoro, e copiarvi tutte le immagini .jpg dalle quali si vuole ottenere il video, e solo quelle.
# b) Creare, nella medesima cartella di lavoro, un documento di testo contenente tutte queste istruzioni, e renderlo avviabile.
# c) Avviare lo script così ottenuto.
# d) Qualora si desideri impartire le istruzioni una ad una, aprire un terminale nella medesima cartella in cui abbiamo già copiato tutte le immagini .jpg dalle quali si vuole ottenere il video, ed impartiamo una ad una (oppure facciamo copia-incolla) le sole 6 righe sottostanti che iniziano con uno spazio vuoto, nel medesimo ordine in cui sono riportate qui sotto (per una corretta esecuzione, è sufficiente digitare i caratteri qui collocati fra il carattere [spazio vuoto] e il carattere #).
#
# 1) Ruota le immagini secondo quanto riportato nei dati exif
#
exiftran -ai *.jpg # Ruota le immagini secondo quanto riportato nei dati exif
#
# 2) Rinomina tutti i files aventi estensione .jpg dando loro un nome che comincia con "prefisso_" e termina con un numero di 6 cifre consecutivo.
#
rename 's/.+/our $i; sprintf("prefisso_%06d.jpg", 1+$i++)/e' *.jpg # Rinomina tutti i files aventi estensione .jpg dando loro un nome che comincia con "prefisso_" e termina con un numero di 6 cifre consecutivo.
#
# 3) Crea un'immagine 1280x720 in formato .jpg visualizzante un messaggio scritto al centro
# -background [colore dello sfondo]
# -fill [colore del messaggio scritto]
# -font [font di caratteri utilizzato per scrivere il messaggio]
# -size [Larghezza x Altezza immagine]
# -pointsize [dimensioni dei caratteri]
# -gravity [posiziona il messaggio al centro dell'immagine]
# label: "[testo del messaggio contenuto nell'immagine]"
# prefisso_000000.jpg = nome dell' immagine creata
#
convert -background green -fill red -font verdana -size 1280x720 -pointsize 100 -gravity center label:"Unica riga \n...\nUltima riga" prefisso_000000.jpg # Crea immagine 1280x720 in formato .jpg visualizzante un messaggio scritto al centro
#
# 4) Crea un video formato .flv con risoluzione 1280:720 (HD Ready) della durata di 3 secondi per ciascuna foto.
#
ffmpeg -f image2 -r 1/3 -i prefisso_%06d.jpg -filter:v "scale='min(1280,iw)':min'(720,ih)':force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" video3secFoto1.flv # Unisce le immagini aventi estensione .jpg il cui nome si ottiene anteponendo prefisso_ ad una sequenza numerica di 6 numeri consecutivi, in un unico video formato .flv con risoluzione 1280:720 (HD Ready) della durata di 3 secondi per ciascuna foto
#
# 5) Se si desidera convertire il file video in un formato diverso (per esempio: .mp4), aprire un terminale ed impartire il comando
#
ffmpeg -i video3secFoto1.flv -q:a 0 -q:v 0 video3secFoto1.mp4 # Converte il video in formato 'flv' in un video in formato 'mp4' mantenendo inalterata la qualità dell'audio e del video.
#
# 6) Crea un video formato .mp4 con risoluzione 1280:720 (HD Ready) della durata di 3 secondi per ciascuna foto
#
ffmpeg -f image2 -r 1/3 -i prefisso_%06d.jpg -filter:v "scale='min(1280,iw)':min'(720,ih)':force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" video3secFoto2.mp4 # Unisce le immagini aventi estensione .jpg il cui nome si ottiene anteponendo prefisso_ ad una sequenza numerica di 6 numeri consecutivi, in un unico video formato .mp4 con risoluzione 1280:720 (HD Ready) della durata di 3 secondi per ciascuna foto