Modifiche

Da GolemWiki.

Ffmpeg

4 453 byte aggiunti, 18 maggio
m
Separare
{{Note
|type=attention
|text=Pagina super-bozza! Da integrare o comunque affiancare per bene a [[Conversioni_videoConversioni video]]
}}
ffprobe video.mp4
{{Note|type=info|text=Per i più curiosi: il primo comando genera un errore perché ''ffmpeg'' richiede un file di output obbligatorio. Quindi anche se le informazioni stampate a schermo sono le stesse, ''ffprobe'' le indirizza verso lo '''stdout''' mentre ''ffmpeg'' le indirizza verso lo '''stderr'''. Per questo motivo le informazioni di ''ffmpeg'' non sono direttamente fruibili con programmi come '''grep'''. Puoi trovare più informazioni sulla redirezione degli stream nel terminale [[Linea_di_comando | qui]]. }} Oltre ad una serie di parametri informativi su ''ffmpeg ' stesso, nell'ultima parte dell'output compaiono
le informazioni del file. Vediamo un esempio:
È di tipo ''audio'' con codifica ''mp3'', con sampling a 44100 Hz, di tipo mono e così via.
 == Convertire Conversione ==
L'operazione più semplice è convertire un file in un altro formato. Sia per file audio che video basta specificare l'input e l'output.
ffmpeg -i input.avi output.mp4
Se non si specificano opzioni, i parametri di conversione saranno stimati dal file di input oppure assunti per default (bitrate, frequenza di campionamento, risoluzione, etc...).
== Separare e unire flussi audio/video ==
Un'operazione molto utile è quella di unire o separare flussi audio/video, ad esempio ''estrarre'' l'audio da un file video oppure ''unire'' un file video privo di audio con una traccia audio a piacere, oppure ancora sostituire la traccia audio di un file video con un'altra.
La sintassi di ''ffmpeg'' permette molti modi per far questo, parleremo di alcuni.
Requisito fondamentale è conoscere la == Manipolazione di flussi audio/video ==Operazioni di manipolazione possono essere separazione, unione o taglio di flussi audio/video. Ad esempio ''estrarre'' l'audio da un file video oppure ''unire''un file video privo di audio con una traccia audio a piacere.Queste operazioni possono essere eseguite molto rapidamente se si mantiene la codificadel flusso: ''ffmpeg'' degli stream effettuerà solo una copia; altrimenti se si sceglie di cambiare codifica sarà necessaria anche una conversione. Per conoscere la codifica si rimanda al paragrafo [[#Informazioni sui file audio e /video]]. La sintassi per mantenere la codifica è: -vcodec copy ''# Mantiene la codifica video (vedi paragrafo precedente), così da utilizzare '' -acodec copy ''# Mantiene la corretta estensione.codifica audio'' -codec copy ''# Mantiene entrambe le codifiche''Lo stesso risultato si ottiene con: -c:v copy -a:v copy 
=== Separare ===
Estrarre Ricordarsi di scegliere l'estensione giusta per il file di uscita ([[#Informazioni sui file audio:/video]]) affinché la copia della codifica abbia effetto. Il parametro <code>-vn</code> elimina il flusso video, <code>-an</code> elimina l'audio.
ffmpeg -i video_in.mkv -vn -acodec copy audio_out.aac
Estrarre il video:
ffmpeg -i video_in.mkv -vcodec copy -an solo_video_out.mkv
Quindi l'opzione <code>vn</code> elimina il video, l'opzione <code>an</code> elimina l'audio e le opzioni <code>vcodec copy</code> e <code>acodec copy</code> mantengono il codec video/audio nel file prodotto. Si noti che queste operazioni sono molto veloci! Al contrario, se venisse specificato un formato di destinazione diverso, ffmpeg dovrebbe anche convertire il flusso. Quest'ultimo passaggio può essere costoso in termini di tempo di esecuzione.
=== Unire ===
In modo simile possiamo unire un flusso audio e un flusso '''solo''' video (senza audio)
ffmpeg -i solo_video.mkv -i audio.aac -c:v copy -c:a copy video_out.mkv
In questo caso sono le opzioni <code>c:v copy</code> e <code>c:a copy</code> a mantenere le codifiche.
=== Sostituire ===
Per sostituire l'audio in un video la sintassi cambia ancora.
 
https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg
 
=== Tagliare ===
Le opzioni per il taglio sono:
* <code>-ss</code>: per specificare l''''istante''' iniziale;
* <code>-t</code>: per specificare la '''durata''' del taglio a partire dall'istante iniziale.
 
L'istante temporale può essere espresso in secondi oppure in formato esteso '''hh:mm:ss'''.
È possibile anche utilizzare solo una delle due opzioni: in mancanza di <code>-ss</code> il video sarà tagliato dall'inizio per una durata di <code>-t</code>; in mancanza di <code>-t</code> il video sarà tagliato dall'istante <code>-ss</code> fino alla fine.
 
ffmpeg -i video.mkv -ss 00:01:30 -t 10 video_cut.mkv ''# taglia dal minuto 1:30 al minuto 1:40 (10 secondi)''
ffmpeg -i video.mkv -t 00:05:40 video_cut.mkv ''# taglia i primi 5 minuti e 40 secondi''
 
Le opzioni di copia della codifica sono state omesse per brevità.
 
=== Splitting audio stereo ===
Separare un flusso audio stereo in 2 file separati mono:
ffmpeg -i stereo.mp3 -map_channel 0.0.0 left.mp3 ''# Isola il canale sinistro''
ffmpeg -i stereo.mp3 -map_channel 0.0.1 right.mp3 ''# Isola il canale destro''
 
 
== Filtri ==
I filtri permettono di modificare il flusso audio/video, pertanto sono incompatibili con le opzioni di copia del codec.
La sintassi generale per un filtro video:
-filter:v 'opzione_1=parametro_1,opzione_2=parametro2'
Per un filtro audio si usa <code>-filter:a</code>. Equivalentemente si possono usare <code>-vf</code> per il video e <code>-va</code> per l'audio.
 
=== Fading ===
Il ''fading'', o dissolvenza, può essere applicato sia all'audio (aumento/diminuzione del volume in entrata/uscita) che al video (comparsa/scomparsa del video in entrata/uscita).
-filter:v 'fade=in:0:30,fade=out:960:30'
-filter:a 'afade=in:st=0:d=1,afade=out:st=32:d=1'
 
=== Scaling ===
Lo ''scaling'' consiste nel modificare la risoluzione del video, ovvero cambiare la dimensione x/y proporzionalmente (non c'è un taglio!).
La risoluzione attuale è riportata nei metadata del video (vedi sezione [[#Informazioni sui file audio/video]]).
Per modificare la risoluzione portandola ad esempio a ''800x600'' aggiungiamo il parametro:
-vf scale=800:600
 
=== Cropping ===
Il ''cropping'' consiste nel ritagliare la dimensione della superficie del video.
 
-filter:v "crop=<width>:<height>:<x>:<y>"
 
La sintassi prevede 4 parametri, tutti espressi in pixel:
* <width>: larghezza del riquadro da produrre
* <height>: altezza del riquadro da produrre
* <x>: coordinata orizzontale del vertice '''in alto''' a sinistra del riquadro da produrre
* <y>: coordinata verticale del vertice '''in alto''' a sinistra del riquadro da produrre
 
'''Attenzione!''' Il riferimento (0,0) delle coordinate (x,y) è il vertice '''in basso''' a sinistra nel frame originario.
 
=== Velocità ===
Per modificare la velocità di un flusso video, dobbiamo modificare la durata del ''presentation timestamp'' ('''PTS'''), ovvero la durata dei frame:
ffmpeg -i input.mp4 -filter:v 'setpts=2*PTS' slower.mp4 ''# Raddoppia la durata dei frame -> rallenta il video di 2x''
ffmpeg -i input.mp4 -filter:v 'setpts=0.5*PTS' faster.mp4 ''# Dimezza la durata dei frame -> accelera il video di 2x''
 
=== Bitrate ===
Il bitrate è il flusso di informazione che il video porta, si misura infatti in <code>bit/s</code> e multipli. Anch'esso è riportato nei metadati. Il bitrate totale sarà la somma del bitrate video più il bitrate audio. Può essere utile agire sul bitrate video per rendere un file più leggero, spesso senza perdere troppo sulla qualità.
Per forzare un bitrate ad esempio a ''400kbit/s'' aggiungiamo:
-b:v 400k
 
 
'''Nota:''' per alcune operazioni semplici viene stampato un messaggio di warning del tipo ''"Invalid return value 0 for stream protocol"''. L'operazione è comunque andata a buon fine, controllare sempre la cartella di lavoro per accertarsi che sia presente il file prodotto.
 
[[Category:Howto]]

Menu di navigazione