DE  |  FR  |  IT

Rilevare il formato video con FFmpeg

Come possiamo rilevare in modo affidabile il formato del contenitore e il codec?

[24-03-2020] Quando si ha a che fare con materiale video, ci si chiede rapidamente se il materiale consegnato sia effettivamente nel formato previsto. I lettori video di solito cercano di aprire tutti i formati conosciuti (anche indipendentemente dall'estensione del file) e offrono poche informazioni.

Di norma, l'ingest determina anche il formato dei file video e li confronta con i formati destinati all'archiviazione. Se questo non funziona o se ci sono incertezze, è essenziale una determinazione più precisa del formato del contenitore e del codec, sia per il video che per l'audio.

I lettore video di solito non ci aiutano. Un'eccezione è rappresentata da VLC media player, che fornisce anche informazioni sul formato. Altri strumenti, come ShotCut, un editor video open source, MediaInfo e QCTools di MediaArea (https://mediaarea.net/) sono in gran parte basati su FFmpeg. Gli utenti abituati a lavorare con la riga di comando (console) possono anche utilizzare direttamente lo strumento di base.

Rilevare il formato del contenitore

ffprobe è uno strumento a riga di comando di FFmpeg e comprende una raccolta di comandi che leggono i metadati tecnici dei file video. Esempio:

Ingresso:
ffprobe -show_entries format=format_name,format_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Problema:
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV

-show_entries si spiega da sé, -of default=nw=1 determina il formato di uscita, in dettaglio: -print_format default=noprint_wrappers=1, -v error riduce i messaggi superflui. Vedi: https://ffmpeg.org/ffprobe.html

Rilevare il formato del codec

Con il formato del codec, di solito si vedono due flussi nel contenitore, un flusso audio e un flusso video:

Ingresso:

ffprobe -show_entries stream=codec_name,codec_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Problema:
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

Qui il codec audio è di tipo "AAC" e il codec video è di tipo "h264".

Alternativa: MediaInfo

Con MediaInfo di MediaArea (https://mediaarea.net/en/MediaInfo) è anche possibile visualizzare queste informazioni in una GUI ed esportarle in vari formati di output:

Attenzione, nessuna convalida del formato

Negli esami descritti, dai file video vengono letti solo i metadati del formato; non avviene alcuna convalida del formato video. Inoltre, non viene controllata l'integrità del flusso video.