[Risolto] FFMPEG-come trasformare foto in video con immagini orientate correttamente? - Versione stampabile +- Forum Informatica Libera (https://www.ergosumracalmuto.org/informaticalibera/forum) +-- Forum: Sistemi Operativi (https://www.ergosumracalmuto.org/informaticalibera/forum/forumdisplay.php?fid=5) +--- Forum: Linux (https://www.ergosumracalmuto.org/informaticalibera/forum/forumdisplay.php?fid=6) +--- Discussione: [Risolto] FFMPEG-come trasformare foto in video con immagini orientate correttamente? (/showthread.php?tid=1436) |
[Risolto] FFMPEG-come trasformare foto in video con immagini orientate correttamente? - Sargon6 - 06/01/2022 Salve a tutti. In una cartella, ho delle immagini chiamate prefisso_numero.jpg dove prefisso_ è una stringa alfanumerica, e numero è un numero di 6 cifre; preciso che prefisso_ è sempre uguale, mentre numero è un numero di 6 cifre progressivo (cioè aumenta di una unità per ogni immagine). Se in quella cartella apro un terminale ed impartisco il comando Codice: ffmpeg -f image2 -r 1/3 -i prefisso_%06d.jpg video3secFoto1.flv # Unisce le sole immagini presenti nella cartella da cui il comando è stato lanciato: aventi estensione .jpg il cui nome si ottiene anteponendo prefisso_ ad una sequenza numerica di 6 numeri consecutivi, in un unico video formato .flv della durata di 3 secondi per ciascuna foto ottengo il file multimediale video3secFoto1.flv composto dall'unione delle immagini contenute nella cartella dove ogni immagine diventa uno spezzone di video di 3 secondi. Il problema è che il video così ottenuto mostra le foto tutte orizzontali, anche se molte sono verticali. Quale istruzione devo impartire per far sì che le foto verticali appaiano verticali anche nel video finale? Saluto tutti e ringrazio sin d'ora chi mi aiuterà. --- edit --- Posto l'output di un paio di foto, nell'eventualità che possa essere utile... Codice: $ file prefisso_000001.jpg # Questa immagine è verticale RE: FFMPEG - come trasformare foto in video con immagini orientate correttamente? - Septem - 06/01/2022 Ciao Sargon6, non conosco ffmpeg ma quello che si vede dai dati delle tue foto e' che hanno lo stesso aspect ratio: 5760x4312. Probabilmente ffmpeg non riconosce il tag di orientamento. Prova con un programma di manipolazione foto tipo GIMP a ruotare e salvare la foto verticale con un rapporto 4312x5760 RE: FFMPEG - come trasformare foto in video con immagini orientate correttamente? - m3nhir - 06/01/2022 (06/01/2022, 21:30)Septem Ha scritto: Ciao Sargon6,Per la rotazione ok, ma probabilmente inserendo una foto in verticale ffmpeg adotterà quell'altezza per tutto il filmato, facendo comparire delle bande nere sopra e sotto alle foto orizzontali. RE: FFMPEG - come trasformare foto in video con immagini orientate correttamente? - Sargon6 - 06/01/2022 Saluto entrambi e ringrazio per l'interessamento. A parte il fatto che stiamo parlando di centinaia di foto, quindi ci metterei tantissimo tempo per modificarle una ad una, girandole una ad una con GIMP non otterrei nulla di diverso di quanto otterrei più rapidamente se apro un terminale nella cartella in cui ho salvato le foto e poi impartisco il comando Codice: exiftran -ai *.jpg # Ruota le immagini secondo quanto riportato nei dati exif Codice: ffmpeg -f image2 -r 1/3 -i prefisso_%06d.jpg video3secFoto1.flv # Unisce le sole immagini presenti nella cartella da cui il comando è stato lanciato: aventi estensione .jpg il cui nome si ottiene anteponendo prefisso_ ad una sequenza numerica di 6 numeri consecutivi, in un unico video formato .flv della durata di 3 secondi per ciascuna foto - SE in una cartella ci sono solo foto orizzontali a prescindere dal contenuto dei relativi dati EXIF, il comando FFMPEG da me utilizzato per creare video produce un video di sole immagini orizzontali, e le immagini verticali vengono RUOTATE - SE in una cartella ci sono sia foto orizzontali sia foto verticali come indicato nei relativi dati EXIF, E la prima foto è orizzontale, il comando FFMPEG da me utilizzato per creare video produce un video di sole immagini orizzontali, e le immagini verticali vengono ALLARGATE. La cosa è un po' complicata da spiegare, ma basta mettere in pratica i 2 comandi summenzionati con 4 foto per vedere ciò che sto tentando di descrivere... RE: FFMPEG - come trasformare foto in video con immagini orientate correttamente? - Septem - 07/01/2022 Prova a guardare qui. Non so se e' quello che ti serve ma sembra che con l'opzione -filter si risolva il problema dell' aspect ratio per non "stiracchiare" le foto in verticale: Nel tuo caso dovrebbe essere: Codice: ffmpeg -f image2 -r 1/3 -i pic_%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 RE: [Risolto] FFMPEG-come trasformare foto in video con immagini orientate correttamente? - Sargon6 - 07/01/2022 Grazie Septem, L'istruzione da te suggerita, risolve Tantissimi problemi, ma non quello della rotazione delle immagini, ma unendo i tuoi suggerimenti a quello he già sapevo, ho risolto il mio problema! Riassumo la soluzione. 1) Ruotare correttamente le immagini aventi estensione .jpg contenute in una cartella nota; per farlo, è sufficiente aprire un terminale nella cartella in cui si trovano le immagini ed impartire il comando Codice: exiftran -ai *.jpg # Ruota le immagini secondo quanto riportato nei dati exif 2) Accertarsi che le immagini abbiano tutte la medesima estensione, che per tutte il nome sia composto dal medesimo prefisso più un suffisso formato da un numero di (nel mio caso) 6 cifre consecutive; per farlo, è sufficiente aprire un terminale nella cartella in cui si trovano le immagini ed impartire il comando: Codice: rename 's/.+/our $i; sprintf("prefisso_%06d.jpg", 1+$i++)/e' *.jpg 3) Solo ora, per ottenere un video formato .flv con risoluzione 1280:720 (HD Ready) della durata di 3 secondi per ciascuna foto, impartire il comando: Codice: 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 ed il gioco è fatto. 4) Se si desidera ottenere il file video in un formato diverso (per esempio: .mp4), dobbiamo impostare di conseguenza l'estensione del file di output, ed il comando diventa: Codice: 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.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 RE: [Risolto] FFMPEG-come trasformare foto in video con immagini orientate correttamente? - Sargon6 - 09/01/2022 --- edit --- Aggiungo le istruzioni per uno script che, se messo nella medesima cartella in cui si trovano le immagini .jpg da convertire in video, basta modificare "la parte fra apici" della riga Codice: label:"Unica riga \n...\nUltima riga" prefisso_000000.jpg # Crea immagine 1280x720 in formato .jpg visualizzante un messaggio scritto al centro Codice: #!/bin/bash |