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

Rispondere a