Faccio operazioni su file video raramente, alcune le ho fatte solo una
volta.
Per questo motivo evito di usare programmi che permettono l'editing di
video poiché troppo complessi, troppo pesanti e poco intuitivi per chi
non è del "settore".
Per questo uso due applicativi:
* ffmpeg: per elaborazioni di file video
* mkvtoolnix-gui: per creare file mkv o estrarre da essi una componente
naturalmente bisogna prima aver installato i due tools:
# apt install ffmpeg mkvtoolnix-gui
ffmpeg è molto complesso da usare perché offre una marea di opzioni e
molte di queste hanno una marea di sotto-opzioni... così quando risolvo
un problema mi salvo uno script di esempio che poi riuso se mi
ricapiterà in futuro la stessa problematica.
mkvtoolnix-gui invece è semplice ed intuitivo.
Con ffmpeg mi sono salvato le seguenti "istruzioni" per fare alcune
operazioni che ho fatto almeno una volta:
Nota: i comandi dovrebbero essere usabili con qualsiasi estensione
video, negli esempi ho messo .mp4 o .mkv, ma penso sia possibile usare
qualsiasi formato.
1) estrarre da un video solo la parte centrale di un video (nell'esempio
dal secondo 10 al secondo 40)
$ ffmpeg -ss 00:00:10 -i in.mp4 -t 00:00:40 -c copy out.mp4
2) rimuovere una parte contigua intermedia bisogna eseguire tre step
(es: rimuovere da 51 secondi a 59 secondi)
2.a) creare i segmenti
$ ffmpeg -t 00:00:50 -i filmato.mkv -c copy segmento1.mkv
$ ffmpeg -ss 00:01:00 -i filmato.mkv -c copy segmento2.mkv
2.b) creare il file input.txt che contiene la lista ordinata dei
segmenti da unire
$ echo "file segmento1.mkv" > input.txt
$ echo "file segmento2.mkv" >> input.txt
2.c) concatenare i segmenti in un unico file
$ ffmpeg -f concat -i input.txt -c copy filmato_risultato.mkv
3) rimuovere più di due parti di un filmato, è simile al punto 2
3.1) creare i segmenti che si vogliono tenere
$ ffmpeg -ss 00:00:10 -t 00:00:15 -i filmato.mkv -c copy segmento1.mkv
$ ffmpeg -ss 00:00:25 -t 00:00:30 -i filmato.mkv -c copy segmento2.mkv
$ ffmpeg -ss 00:00:53 -t 00:00:57 -i filmato.mkv -c copy segmento3.mkv
3.b) creare il file input.txt che contiene la lista ordinata dei
segmenti da unire
$ echo "file segmento1.mkv" > input.txt
$ echo "file segmento2.mkv" >> input.txt
$ echo "file segmento3.mkv" >> input.txt
3.c) concatenare i segmenti in un unico file
$ ffmpeg -f concat -i input.txt -c copy filmato_risultato.mkv
4) per vedere dimensioni di un video:
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height
-of csv=s=x:p=0 input.mp4
5) per ridimensionare video (nell'esempio trasforma il video in.mp4 con
una dimensione di 1024xD ove D è calcolato in base alla dimensione
iniziale per mantenere le proporzioni)
$ ffmpeg -i in.mp4 -vf scale=1024:-1 output.mp4
6) per estrarre una sezione di un video, eliminando tutto ciò che ci sta
fuori
$ ffmpeg -i in.mp4 -filter:v crop=NewX:NewY:StartX:StartY out.mp4
dove NewX è la nuova len (larghezza), NewY è la nuova H (altezza) e
Start indica la dimensione X Y da estrarre
esempio per estrarre da 1280x720 una dimensione di 622x358 con
StartX=329 e StartY=0 (== NewX NewY, 329 = (1280-622)/2 e 0 perché parte
dalla parte alta del video, se si vuole centrato => (720-358)/2)
$ ffmpeg -i in.mp4 -filter:v crop=622:358:329:0 out.mp4
Nota: per calcolare la dimensione da estrarre salvo un frame del video,
dove si vedono bene i contorni che voglio estrarre e poi carico
l'immagine in gimp per determinarne le dimensioni
Per mkvtoolnix-gui è possibile aggiungere ad un video, ad esempio, audio
e/o sottotitoli.
Se i file sono (naturalmente devono essere tutti della durata corretta):
video.mp4
audio.mp3
sottotitoli.it.vtt
$ mkvtoolnix-gui video.mp4 audio.mp3 sottotitoli.it.vtt
e premere il bottone per la creazione del file mkv una volta apparsa la GUI.
L'estrazione di un componente di un file mkv non è così semplice ed
immediata. L'ho fatta solo una volta e mi sono dimenticato di salvarmi
le istruzioni.
Spero che questi comandi possano essere utili anche ad altri.
Ciao
Davide