Prima che questo articolo ci fornisca una procedura dettagliata sulla creazione di video da immagini in un ambiente con sistema operativo Linux, è importante capire il perché prima di affrontare il come.
Video basati su immagini
Il concetto di integrare le immagini nei video non è una scienza missilistica in quanto logicamente richiede una serie di immagini per comporre un video. Ogni video che guardi; anche i tuoi video preferiti di YouTube sono solo una serie di immagini fisse che subiscono una transizione da immagine a immagine molto rapida. Tra queste transizioni c'è un'immagine nera che consente al video in riproduzione di passare da un'immagine fissa a quella successiva.
[ Potrebbe piacerti anche:Come trovare i file modificati nelle ultime 24 ore in Linux ]
Il meccanismo di transizione da immagine a immagine è troppo veloce per essere notato dall'occhio umano e l'illusione ottica è uno dei fattori che contribuiscono. Queste immagini che definiscono un video creato sono chiamate frame. Quando metti in pausa un video in riproduzione, stai effettivamente guardando un fotogramma (fermo immagine). È il motivo per cui un video in pausa potrebbe avere una nitidezza sfocata rispetto a quello in riproduzione.
Misurare i video utilizzando le immagini
Una frequenza fotogrammi indica quante immagini passano in un solo secondo. Quindi, se un'immagine passa ogni 33 millisecondi, quel video attribuisce a 30 fotogrammi al secondo che sono circa 108.000 fotogrammi all'ora. Questo concetto dovrebbe aiutarti a capire perché le dimensioni dei video a 720p, 1080p e 4K variano.
Per quanto entusiasmante sia questa relazione tra immagini e video, questa guida all'articolo deve reindirizzare la sua attenzione da concetti avanzati di editing video e aiutarti a trasformare le tue immagini fisse in video.
Utilizzo di ffmpeg per la creazione da immagini a video in Linux
Questo ffmpeg il software gratuito con il suo codice sorgente pubblicamente disponibile ci aiuterà a raggiungere l'obiettivo di questo articolo.
Scegli una delle seguenti opzioni di installazione in relazione alla distribuzione del sistema operativo Linux in uso.
Installa FFmpeg in RHEL, CentOS, Rocky e AlmaLinux
$ sudo dnf install epel-release $ sudo yum config-manager --set-enabled PowerTools $ sudo yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo $ sudo dnf install ffmpeg
Installa FFmpeg in Fedora Linux
$ sudo dnf install \ https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \ https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm $ sudo dnf update $ sudo dnf install ffmpeg
Installa FFmpeg in Debian, Ubuntu e Mint
$ sudo apt-get install sshpass [On ]
Installa FFmpeg in Arch Linux
$ sudo pacman -S git $ git clone https://aur.archlinux.org/snapd.git $ cd snapd $ makepkg -si $ sudo systemctl enable --now snapd.socket $ sudo ln -s /var/lib/snapd/snap /snap $ sudo snap install ffmpeg
Installa FFmpeg in OpenSUSE Linux
$ sudo zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.2 snappy
Sostituisci openSUSE_Leap_15.2 con la tua versione di openSUSE, ad es. openSUSE_Tumbleweed, openSUSE_Leap_15.0 o openSUSE_Leap_15.1.
Quindi, esegui la serie di comandi per installarlo.
$ sudo zypper --gpg-auto-import-keys refresh $ sudo zypper dup --from snappy $ sudo zypper install snapd $ sudo systemctl enable snapd $ sudo systemctl start snapd
I seguenti comandi aggiuntivi si applicano agli utenti di Tumbleweed.
$ sudo systemctl enable snapd.apparmor $ sudo systemctl start snapd.apparmor
Infine, installa ffmpeg
$ sudo snap install ffmpeg
Come utilizzare FFmpeg per la creazione di immagini in video in Linux
La creazione di filmati time-lapse e la fotografia stop-motion sono alcuni dei principali vantaggi della creazione di un video da una serie di immagini fisse fornite.
Preparazione delle immagini video
La convenzione di denominazione delle immagini di input dovrebbe essere sequenziale da ffmpeg segue una regola di corrispondenza delle stringhe per identificare e allineare correttamente queste immagini.
La convenzione di denominazione dei file di immagine deve aderire a uno dei seguenti tre modelli di nomi file supportati da ffmpeg.
- Con zeri iniziali – Il segmento del comando ffmpeg "nomefile-%03d.png ' cercherà file di immagine con nomi che vanno da nomefile-001.png a nomefile-999.png.
- Senza zeri iniziali – Il segmento del comando ffmpeg "nomefile-%d.png ' cercherà file immagine con nomi che vanno da nomefile-1.png a nomefile-999.png.
- Senza uno schema di denominazione regolare – Il segmento del comando ffmpeg "nomefile-*.png ' non seguirà alcun ordine sequenziale durante la ricerca di file immagine.
Creazione di video da immagini in Linux
Il ffmpeg la sintassi per la creazione di immagini in video per i nomi di file di immagine con zeri iniziali è simile alla seguente:
$ ffmpeg -framerate 10 -i filename-%03d.png output.mp4
Dalla sintassi del comando precedente, puoi impostare la frequenza dei fotogrammi sulla cifra desiderata e specificare il nome del file video di output.
Proviamo a creare un video dalle seguenti immagini.
$ ls

Poiché la convenzione di denominazione di questi file immagine è sequenziale ma senza zeri iniziali, utilizzeremo il seguente comando ffmpeg:
$ ffmpeg -framerate 25 -i image-%d.png output.mp4
Abbiamo impostato la frequenza dei fotogrammi su 25 .

Il file video di output previsto dovrebbe essere visibile:
$ ls

Quando le immagini che stai convertendo in video non hanno bisogno di seguire un flusso sequenziale; immagini con nomi casuali come image-00.png, image-10.png e image-30.png, puoi utilizzare il modello di corrispondenza glob come dimostrato dalla seguente sintassi:
$ ffmpeg -framerate 10 -pattern_type glob -i "image-*.png" output.mp4