003 Come usare FFmpeg e Mediainfo per analizzare files multimediali.

27 Agosto, 2022 (15:14) | ffmpeg, Fotografia digitale, Linux, Video | By: sargonsei

003 Come usare FFmpeg e Mediainfo per analizzare files multimediali.

003.1 Ottenere informazioni relative alla versione di FFmpeg in uso, co-dec disponibili, e opzioni utilizzabili.
aprire un terminale ed impartire i comandi:

ffmpeg -version  # Versione di FFmpeg in uso
ffmpeg -codecs   # Mostra elenco dei vari codec utilizzabili per leggere files
ffmpeg -decoders # Mostra elenco dei vari decoder utilizzabili per leggere files multimediali
ffmpeg -encoders # Mostra elenco dei vari encoder utilizzabili per creare files multimediali
ffmpeg -h decoder=mpeg4 # Visualizza opzioni specifiche e informazioni su un particolare DECodificatore
ffmpeg -h encoder=mpeg4 # Visualizza opzioni specifiche e informazioni su un particolare Codificatore

ffmpeg -h        # Mostra breve elenco opzioni utilizzabili
ffmpeg -h full   # Mostra elenco completo delle opzioni utilizzabili

003.2 Ottenere informazioni relative alle caratteristiche di una sorgente video HARDWARE.
Aprire un terminale ed impartire i comandi:

ffmpeg -devices -hide_banner # Elenca i dispositivi multimediali disponibili
ffmpeg -f x11grab -i :0.0 -hide_banner  # Elenca caratteristiche della sorgente video SCHERMO DEL COMPUTER
ffprobe -f x11grab -i :0.0 -hide_banner # Elenca caratteristiche della sorgente video SCHERMO DEL COMPUTER
ffmpeg -i /dev/video0 -hide_banner  # Elenca caratteristiche della sorgente video WEBCAM
ffprobe -i /dev/video0 -hide_banner # Elenca caratteristiche della sorgente video WEBCAM
ffprobe -f alsa -i default -hide_banner  # Elenca caratteristiche della sorgente audio ALSA
ffprobe -f pulse -i default -hide_banner # Elenca caratteristiche della sorgente audio PULSE

003.3 Ottenere informazioni relative alle caratteristiche di un FILE MULTIMEDIALE.
Aprire un terminale ed impartire i comandi:

ffmpeg -i videoIN.mp4 -hide_banner # Elenca caratteristiche del file multimediale videoIN.mp4
ffprobe -i videoIN.mp4 -hide_banner # Elenca caratteristiche del file multimediale videoIN.mp4
mediainfo videoIN.mp4  # Elenca caratteristiche del file multimediale videoIN.mp4

videoIN.mp4 è il nome del file multimediale di cui si desidera conoscere le caratteristiche.
Non sempre servono tutte le informazioni fornite da questi comandi; spesso è sufficiente visionare l’output dei comandi

ffmpeg -i videoIN.mp4 -hide_banner 2>&1 | grep Stream # Mostra i parametri principali di un file video chiamato videoIN.mp4
ffprobe -i videoIN.mp4 -hide_banner 2>&1 | grep Stream # Mostra i parametri principali di un file video chiamato videoIN.mp4
mediainfo videoIN.mp4 | egrep -A3 'name|File|Width' # Mostra i parametri principali di un file video chiamato videoIN.mp4

oppure

mediainfo videoIN.mp4 | egrep -A3 Width # Mostra larghezza, altezza, rapporto e, se presente, ROTAZIONE di un file video chiamato videoIN.mp4

.
In alternativa, per visualizzare i metadati delle immagini, è possibile utilizzare il
comando di ImageMagick: [identify -verbose nomeFoto.estensione].

identify -verbose foto.jpg # Usa ImageMagick per leggere i metadati dell'immagine foto.jpg

.
003.4 Scrivere in un file di testo le informazioni relative alle caratteristiche di una sorgente video HARDWARE o di un FILE MULTIMEDIALE.
L’output di un comando BASH è di due tipi: Output standard (canale 1) che contiene esclusivamente l’effetto del comando, ed Errore standard (canale 2) che contiene esclusivamente messaggi di errore ed avvisi vari che accompagnano l’esecuzione del comando stesso. Di default, l’output del canale 1 può essere reindirizzato verso un file di testo frapponendo l’operatore [>] (senza parentesi quadre) fra il comando BASH ed il nome del file di testo che si desidera che contenga l’output del comando stesso; l’output del canale 2 (Error standard) viene indirizzato sul terminale a prescindere di dove sia stato reindirizzato l’output del canale 1 (Output standard). Per far confluire in un file di testo avvisi e messaggi di errore che, di default, verrebbero visualizzati sul canale 2, non basta reindirizzare l’output del canale 1 verso un file di testo, ma occorre altresì indirizzare l’output del canale 2 verso il canale 1; questo effetto si ottiene ponendo l’operatore [2>&1] (senza parentesi quadre) in coda al comando suddetto.
Seguono alcuni esempi di re-indirizzamento dell’output in un file di testo.

ffmpeg -f x11grab -i :0.0 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente video SCHERMO DEL COMPUTER
ffprobe -f x11grab -i :0.0 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente video SCHERMO DEL COMPUTER
ffmpeg -i /dev/video0 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente video WEBCAM
ffprobe -i /dev/video0 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente video WEBCAM
ffprobe -f alsa -i default -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente audio ALSA
ffprobe -f pulse -i default -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche della sorgente audio ALSA
ffmpeg -i videoIN.mp4 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche del file multimediale videoIN.mp4
ffprobe -i videoIN.mp4 -hide_banner > info.txt 2>&1 # Crea il file di testo 'info.txt' contenente le caratteristiche del file multimediale videoIN.mp4