001 Generalità su FFmmeg e su questi appunti

27 Agosto, 2022 (15:02) | ffmpeg, Linux, Video | By: sargonsei

001 Generalità su FFmmeg e su questi appunti
FFmpeg è un pacchetto che consente di manipolare files video da riga di comando o tramite script.
Esistono molte applicazioni che lo utilizzano come “esecutore materiale” di istruzioni impartite tramite Interfaccia Grafica (nota anche come GUI (dall’inglese Graphical User Interface), delle quali in questa guida non parlo; l’utente che già installato una GUI che implementa FFmpeg, sicuramente ha già installato anche FFmpeg, in caso contrario, per poter eseguire i comandi qui spiegati, è indispensabile installare il pacchetto FFmpeg e tutte le sue dipendenze.
L’efficacia di ogni singola istruzione riportata nella presente guida, è stata testata tramite un computer su cui è stato installato il Sistema Operativo Lunux Ubuntu 22.04 LTS, e dei files multimediali creati tramite smartphone Huawei P8 Lite 2017 (PRA-LX1) ma, a parte le istruzioni per installare FFmpeg (che possono cambiare a seconda del Sistema Operativo in uso), sono facilmente utilizzabili con qualsiasi Sistema Operativo.
Il risultato finale, può essere facilmente predeterminato dall’utente impostando i relativi parametri. Nel caso in cui l’utente non provveda ad impostare tutti i parametri necessari, ffmpeg provvederà a ricavare i dati mancanti basandosi sui soli parametri impostati dall’utente, deducendo i parametri mancanti dall’estensione dei files multimediali richiamati nel comando impartito dall’utente.
Per quanto concerne il dispositivo utilizzato per creare i video da elaborare, nulla impedisce di utilizzarne una videocamera o uno smartphone diverso di quello utilizzato da me; se ciò si verifica, potrebbe essere necessario impostare dei parametri diversi da quelli da me utilizzati.
La possibilità di visualizzazione dei files multimediali ottenuti seguendo questa guida, è stata positivamente verificata sia mediante il Video Player VLC installato su PC, sia mediante l’utilizzo di un televisore con schermo piatto in formato 16/9 che supporta al massimo una risoluzione di 1366 pixels in larghezza per 768 pixels in altezza; nulla impedisce di visualizzare i video su un riproduttore diverso di quello utilizzato da me; se ciò si verifica, potrebbe essere necessario impostare dei parametri diversi da quelli da me utilizzati.

Cose da sapere prima di cominciare.
1. I parametri dimensionali non specificati sono dedotti da FFmpeg in base alle caratteristiche del video in ingresso, mentre gli altri parametri (es. i codec) sono dedotti da FFmpeg in base all’estensione del video finale, tenendo conto di quali sono i parametri disponibili al momento della conversione.
Di conseguenza, lo stesso comando potrebbe fornire output visivamente diversi, se utilizzato su computer diversi, ovvero se impartito prima o dopo un aggiornamento di FFmpeg.
2. I parametri [-acodec copy] e [-vcodec copy] fanno molto di più che impostare, per il file multimediale in uscita, i medesimi codec utilizzati dal file multimediale in entrata.
Quando FFmpeg imposta valori di default per i parametri NON definiti dall’utente, i parametri impostati di default potrebbero essere incompatibili con la funzione principale del comando stesso. Di conseguenza, un comando di FFmpeg che utilizza il parametro [-vcodec copy] non sempre è corretto; e questo vale anche quando l’utente vuole che il video in uscita faccia uso del medesimo codec del video in entrata.
3. Se non specificamente indicato diversamente, FFmpeg fa in modo che:
– il file multimediale in uscita abbia come audio l’audio del primo file multimediale in ingresso [0:v];
– il file multimediale in uscita abbia come durata la durata del primo file multimediale in ingresso [0:v].
4. Se l’utente imposta dimensioni e/o un rapporto dimensionale X:Y diverso dal rapporto X:Y del video in entrata, FFmpeg provvede autonomamente sia a modificare la risoluzione, sia a deformare le proporzioni del video prodotto.
5. FFmpeg provvede autonomamente all’eliminazione di ogni porzione di ogni video in ingresso che fuoriesce dai margini prestabiliti del video un uscita.
6. Quando l’utente imposta risoluzione e posizione di ogni singolo video in modo che i video si sovrappongono in parte o totalmente, FFmpeg farà in modo che, nella parte del video finale in cui si verifica la sovrapposizione, il video a cui corrisponde un numero più basso sia coperto dal video a cui corrisponde un numero più alto.
7. Di default, quando l’imput è costituito da files multimediali, ogni singolo comando ha effetto su tutto il file multimediale in ingresso, e quando l’imput è costituito da periferiche di acquisizione (webcam oppure ciò che appare sullo schermo) ogni singolo comando ha effetto dal momento in cui è stato impartito, al momento in cui viene premuto il tasto [Q], oppure la combinazione di tasti [Control]+[C] oppure il terminale viene chiuso; è tuttavia possibile inserire apposite opzioni che determinano l’inizio e la fine della creazione del file di output.