; Uso di ffprobe





"Giornalismo è diffondere ciò che qualcuno non vuole che si sappia. Il resto è propaganda."
Horacio Verbitzky

Blog di Giovanni Chifelio

La proprietà letteraria degli scritti riportati in questo sito è di Claudio Chicco, Via Roma, 30 PAESANA (CN), il quale ne permette la la citazione di brani, citando fonte ed autore e NON ne permette il SUNTO, se non in una versione concordata con l'autore. Per questo fine usare l'apposito form " contatti". Gli articoli pubblicati nel sito possono essere non attendibili. Non mi assumo alcuna responsabilità per contenuto degli articoli di altri autori. La responsabilità dei testi e del loro contenuto è unicamente dei rispettivi autori. Eventuali commenti postati sono a responsabilità di chi li ha postati.
Questo sito NON viene aggiornato con regolarità periodica, per cui NON può essere considerato una testata giornalistica di informazione. Quello che viene espresso dall'autore è libera opinione dello stesso autore, garantita come diritto dall'Art.21 della Costituzione Italiana.

I miei libri:
Il coraggio di cambiare idea: inganni e falsità nella cultura occidentale https://www.amazon.it/dp/B0GY5JTZ2L

Il cinghiale: Pian Marmarin https://www.amazon.it/dp/B0H7MK9QNZ

Un uomo in fuga: Il Ritorno https://www.amazon.it/dp/B0HBXRXYZV

Di prossima pubblicazione su amazon:
Manuale pratico del panificatore pasticcere: Ricette e preparazione di pane, grissini, pasticceria da forno e pasticceria fresca.

Sono ancora disponibili alcune copie della prima stampa 2021 Contattami per informazioni, oppure contattarmi sulla mia pagina Telegram.
Oppure attendi la prossima pubblicazione su amazon kdp.

L'uso di «ffprobe» per accedere ai «metadata tags» dei video e sottotitoli con «drawtext»
Sabato 8 novembre 2025

N


el mio percorso da autodidatta nell'apprendimanto del linguaggio di programmazione relativamente alla manipolazione dei video, ho sentito l'esigenza di accedere ai metadati dei video, anche allo scopo di ridurre le domande nel programma che esegue le manipolazioni, vuoi sulle dimensioni dei video e della loro durata, ma anche della data di creazione: tutti dati accessibili con ffprobe, che con pazienza e una minima conoscenza del linguaggio di programmazione bash, possono essere affidati a delle variabili che alla fine vengono passati alla istruzione finale ffmpeg che esegue le manipolazioni desiderate.
    Mi sono altresì accorto, che molti dei video manipolati con le mie conoscenze precedenti, soprattutto in fase di concatenazione (concat) e taglio (trim) perdevano, erano privi di alcuni questi tags, in particolare il tempo di creazione del video. Nel primo caso, appare abbastanza ovvio che venga perso perlomeno il tag creation_time, per il fatto che, mettendo insieme più video, si hanno tanti tempi di creazione diversi quanti sono i video, quindi quale vogliamo scegliere?
    La scelta più naturale sarebbe ovviamente utilizzare quella del primo video, il che si può fare. Lo scopo di questo articolo è appunto quello di usare degli accorgimenti per evitare di perdere tali dati nel caso del taglio e di altre trasformazioni, ma anche di dire al programma sia di utilizzare il dato del primo video (o di altri se Vi aggrada) nel caso della concatenazione, sia di ovviare alla mancanza di tale dato, nel caso di un video che ne risulti privo.

Script bash che aggiunge, con filter_complex
un counter-down fino a fine video.
Potete copiare il codice cliccando su
questo testo

    Nel codice presentato qui sopra (tcountdown.sh) viene semplicemente eseguito, utilizzando drawtext di ffmpeg, un counter-down che parte dalla durata del video a zero. In questo caso, come in quello seguente (timer.sh), si ha un bell'effetto orologio digitale, utilizzando il carattere consigliato (ani.ttf), che nel mio sistema rappresenta, almeno per i numeri, proprio i caratteri digitali semplici ricavati dalle sette astine che li compongono a seconda dei casi. I due programmi fanno praticamente «quasi» la stessa cosa, creando contatori uno al contrario dell'altro: l'uno cresce in valore, l'altro si azzera. Nei due programmi i dati di partenza utilizzati sono diversi: per il timer è necessario conoscere il tempo di creazione, per il count-down, serve solamente la durata del video.
    Facendo cose simili, ovviamente l'uno è la derivazione dell'altro, per cui il programma è quasi simile nella struttura, ma nel caso del timer ho inserito l'aggiunta del tag creation_time nel filter_complex del comando ffmpeg finale, mentre nel count-down ho eseguito questa modifica del metadato subito dopo la decisione di quale dato inserire, essendo il valore mancante. Chiunque può modificare questa operazione, guardando l'altro.

Script bash che aggiunge, con filter_complex
un timer che inizia dalla data di
creazione fino a fine video.
Potete copiare il codice cliccando su
questo testo

    In questo articolo Vi propongo tutta una carrellata di programmi di frequente utilità se si manipolano i video, ma che sono utili anche per altre cose. Per esempio, utilizzando nella nostra zona file di diverso tipo che utilizzano la codifica del testo ISO-8859-1, potrebbe essere utile –lo è sicuramente con i sottotitoli– trasformare il testo in codifica UTF-8: il programma semplicissimo texttoutf8.sh fa esattamente questo. L'ho testato sulla ricodifica di un file.ass che conteneva caratteri speciali e li ha codificati in modo che ffmpeg possa utilizzarlo per creare sottotitoli contenenti questi caratteri speciali in modo corretto, senza alterare la struttura del file.ass stesso.
    Anche il progranna salvatabellacodice.sh, nato da esigenze di presentazione dei codici del programma nel linguaggio HTML con una veste grafica appropriata ai testi di codice, riveste una utiità generale più ampia di quello che svolge qui. Il programma legge un file di testo riga per riga e la trasforma in qualcos'altro. In questo caso lo trasforma in una tabella dal colore di sfondo personalizzato, che nella prima colonna evidenzia il numero di riga in una forma grafica accattivante. Al di là del caso specifico, questo programma può essere utilizzato per la manipolazione dei dati contenuti in un file di testo o HTML, oppure PHP, anche se in quest'ultimo caso il tutto potrebbe essere fatto con lo stesso linguaggio di codice programma PHP.
    Per non «farmi bello con le piume del pavone», occorre puntualizzare che i colori diversi per le varie categorie di codice, sono da ascriversi ai programmatori degli editor di testo Linux, che vengon automaticamente generati da tali editor e vengono trasformati in istruzioni HTML, qualora si richieda (File > Esporta come HTML...). Mia è solamente la trasformazione in tabella, con colori di sfondo scelti da me (ma che volendo potete cambiare).
    Ed ora veniamo al «pezzo forte» del presente articolo, un codice che mi ha richiesto più di una settimana di lavoro per poterlo strutturare in modo che potesse funzionare correttamente: si tratta di un programma che genera un comando ffmpeg in modo da mettere i sottotitoli che trascrivano l'audio, non già in modo automatico, ma disponendo di un file di testo, preceduto ad ogni riga dal tempo in secondi in cui inizia la frase da trascrivere. Questo ultimo file deve essere creato manualmente, il che non è nulla rispetto alla complessa creazione della serie di comandi drawtext uno dopo l'altro, come si vedrà in un esempio di pochi minuti, per il quale farò un video esemplificativo, non per leggere il presente articolo tecnico che deve essere letto con attenzione consapevole e concentrata, che aggiungerò alla fine dell'articolo.

Script bash che aggiunge, con filter_complex
dei sottotitoli personalizzati che riportano il parlato.

    Il programma di cui sopra, costruisce e memorizza il comando sia in un file ti testo, sia in una variabile del programma stesso, per cui, alla fine potete scegliere se aggiungere immediatamente i sottotitoli, oppure potete aprire il file testo generato e modificare a piacimento ogni singolo drawtext con colori diversi, grandezze di carattere e font per singole unità che potreste voler in questo modo evidenziare, dopo di che, potete copiare tutto il file e, incollandolo sulla Vostra console, eseguire finalmente il comando che inserirà i vostri sottotitoli.
    Alcune avvertenze importanti:

  1. eliminare tutta la punteggiatura dal testo;
  2. eliminare gli apostrofi che generano problemi all'interno dei comandi ffmpeg (la soluzione migliore è quella di sostituirli con uno spazio vuoto –almeno fino a che troverò la soluzione a questo problema)

Il video con i sottotitoli immessi automaticamente dal programma
subtdialogotextfile.sh Questo video è l'aggiornamento del
precedente che era stato creato con subtdialogo.txt, che però non
era in grado di inserire l'apostrofo e la punteggiatura (leggi sotto).

Aggiornamento di martedì 11 novembre 2025

     Dopo averle tentate tutte per fare in modo che il programma di cui sopra immettesse anche la punteggiatura (per la punteggiature è facile in quanto basta aggiungere il carattere di escape prima di essa «\,») per l'apostrofo nel testo dei sottotitoli, mi sono deciso, dopo aver rimbalzato più volte nel muro di gomma della constatazione che la cosa era tecnicamente impossibile, essendo «'» un segnaposto dell'istruzione drawtext, ho dovuto optare per l'opzione di immettere la singola linea di testo in un file.txt, sostituendo l'istruzione «text='Qui c'è il mio testo'» con l'istruzione «textfile=mio.txt», nel quale file esiste una sola riga con il testo «Qui c'è il mio testo che non crea problemi e viene scritta proprio così come è scritta.
     Oltre al vantaggio di poter scrivere quello che si vuole, tutta l'istruzione drawtext risulta molto più semplice. Questo nuovo programma subtdialogotextfile.sh funziona allo stesso modo del precente, ma alla fine deve cancellare tutti i singoli file che contengono le singole righe di sottotitoli. Questo viene fatto in automatico, se si sceglie di eseguire alla fine del programma il comando ffmpeg appena creato, ma se si sceglie di non eseguirlo occorre decidere se conservare o rimuovere questi files alla fine del programma.


    Precedenti articoli su ffmpeg:
    ffmpeg_fcomplex.php Utilizzo di filter_complex per fare più operazioni contemporaneamente
    ffmpeg6.php Mosaico di video.
    ffmpeg5.php Sottotitoli colorati con file.ass
    ffmpeg4.php Taglio, velocità, ritaglio (crop), adattamento video verticale con programmi bash.
    ffmpeg3.php Primo programma bash per concatenamento video, aggiunta audio e sottotitoli.
    ffmpeg.php Primo approccio al comando ffmpeg

Vi saluto e vi abbraccio tutte e tutti
Se l'articolo Vi è piaciuto e Vi è stato utile, mettete dei commenti, qui sotto e sotto il video, e divulgate.
Vi ringrazio.
Claudio Chicco

Articolo n.214: ffprobe.php
Sito: chifelio
Tema: 27 - Tecniche di programmazione informatica
Data: 2025-11-08

_______________________________

Di Claudio Il 2026-08-08 16:45:23 Commento n.370

Può anche darsi che, visto che ho capito come fare per pubblicare con amazon kdp, deciderò di scrivere un libro "tecnico" per la manipolazione dei video utilizzando semplicemente comandi ffmpeg da linea di comando.
Sarebbe un libro che include anche la conoscenza minima del linguaggio bash, il che è inevitabile dovendo usare la linea di comando, ragion per cui è molto più semplice creare dei veri e propri programmi bash che gestiscono ogni tipo di manipolazione dei video.
Un abbraccio a coloro che mi seguono.

_______________________________

'

Commenta questo articolo.


       Dopo aver premuto "INVIO", verrai reindirizzato ad una pagina nella quale devi postare le lettere delle immagini che appaiono, per dimostrare di non essere un robot.
       Se tutto va a buon fine, verrai nuovamente reindirizzato alla pagina che hai commentato, con in fondo, dopo questo "form", il tuo nuovo commento.

<--Inserisci Commento

Scegli Nome utente (Obbligatorio *)

Cognome
(Se vuoi apparire te stesso!)

Indirizzo email (Obbligatorio * - Tranquillo! NON verrà pubblicato, ne' venduto a scopi commerciali pubblicitari.
La mail la devi mettere in ogni altro blog! Questo sito NON UTILIZZA cookie)

       Tengo molto ad avere commenti e riscontri, anche, soprattutto, da chi non concorda con quanto scrivo.
   Il fatto di dover inserire la mail non ti spaventi: NON SARAI PERSEGUITATO DA NESSUNA "MAILING LIST", ne' tantomeno, la tua mail sarà venduta a scopo commerciale ne' pubblicata.
       Ricordo brevemente le regole base di qualsiasi blog:
       Niente insulti e volgarità (verranno cancellati commenti di questo tipo!).