Articolo n.186: ffmpeg.php
Sito: chifelio
Tema: 27 - Tecniche di programmazione informatica
Data: 2022-04-25
_______________________________
"Giornalismo è
diffondere ciò che qualcuno non vuole che si sappia. Il resto è propaganda."
Horacio Verbitzky
La proprietà letteraria degli scritti riportati in questo sito è di Claudio Chicco,
Via Roma, 30
PAESANA (CN), il quale ne permette la la citazione di brani, citando fonte
ed autore e NON ne permette il SUNTO, se non in una versione concordata con l'autore.
Per questo fine usare l'apposito form "
contatti".
Gli articoli pubblicati nel sito possono essere non attendibili. Non mi assumo alcuna responsabilità per contenuto
degli articoli di altri autori. La responsabilità dei testi e del loro contenuto è unicamente dei rispettivi autori.
Eventuali commenti postati sono a responsabilità di
chi li ha postati.
Questo sito NON viene aggiornato con regolarità periodica,
per cui NON può essere considerato una testata giornalistica di informazione. Quello che viene espresso
dall'autore
è libera opinione dello stesso autore, garantita come diritto dall'Art.21 della Costituzione Italiana.
Manipolazione video con ffmpeg da linea di comando Linux.
Lunedì 25 aprile 2022
hiunque si appresta a pubblicare video di qualsiasi genere su YouTube, Brighteon, SharkTube o
altre piattaforme, deve rendersi conto che i video non possono essere buttati là, grezzi come
sono stati girati, ma necessitano di manipolazioni di vario genere: alcuni pezzi devono
essere tagliati; devono essere concatenati più spezzoni per comporre il video con il
messaggio che si vuole trasmettere, foss'anche solo un resoconto di una camminata in
montagna, non si può girare tutto il percorso; può essere desideroso abbellire il risultato
finale con musiche di fondo oppure dei sottotitoli.
Per fare tutte queste cose sembrerebbe necessario acquistare programmi di manipolazione video
costosi e non facilmente utilizzabili. Esistono programmi ed applicazioni gratuite per fare queste cose
anche dal cellulare. Chi si contenta di vedere tutte queste cose fatte senza sapere come, può
andare benissimo una applicazione per Android come Video Editor Pelicut o magari il programma per
PC fornito dalla Sony, action cam che possiedo io, che si chiama PlayMemories. Tenendo però
presente che i fornitori del software includono nei video i loro tags a scopi
pubblicitari. Ed hanno i loro limiti questi programmi ad interfaccia grafica: potete solo fare le
cose che il programmatore ha deciso di lasciarvi fare, il resto è a pagamento.
La solita vecchia storia, molto nota a chi pratica i luminari italiani della medicina ufficiale:
«Se però viene in clinica, a pagamento, il posto è disponibile subito ed i farmaci sono
più validi!»
Per me che amo sapere sempre cosa sto facendo e che considero l'SO "finestre", come il
generatore di virus che dopo fornisce l'anti-virus a pagamento, come spazzatura e sono
passato a SO Linux da molto tempo, esistono tantissime alternative a portata di click
assolutamente libere ed open source, che ci permettono di fare tutto quello che ci passa per
la mente, compreso manipolare i video, senza dover comprare costosi programmi funzionanti [!?]
nel suddetto SO windows, di Kill Gates, il quale ha svelato al mondo intero chi essere davvero nella
attuale psico-farsa-pandemica.
Il più completo strumento di manipolazione di file media, video, immagini ed audio si chiama
ffmpeg ed è un potente strumento da linea di comando console, in grado di fare
qualsivoglia cosa desideriate fare dei vostri media file. Detto per inciso poi, quei programmi
grafici lavorano tutti a suon di comandi ffmpeg!
Mi ci è voluto un paio di settimane per tentare di capirci qualche cosa, ma vi assicuro che
la soddisfazione del "fai da te" in questo settore è davvero grande ed i risultati
sono eclatanti, superiori molto più di quanto si possa ottenere con sofisticati programmi ad hoc
grafici, ossia con finestre e menu limitati e limitanti. Con ffmpeg da linea di
comando è possibile ottenere tutto quanto si possa immaginare dalla manipolazione dei media
file. Non ho alcun interesse economico in ffmpeg, per cui il mio
entusiasmo è del tutto gratuito e disinteressato. E sto scrivendo questa piccola wiki
su ffmpeg ancora da principiante,
ma che già ha ottenuto dei risultati, come vedremo più avanti.
Esempi pratici di trasformazioni con comando ffmpeg
Premetto che i comandi ffmpeg funzionano sia sui file audio che su quelli video,
mutatis mutandis.
Il primo sito web in cui mi sono imbattuto è stato questo:
https://codepre.com/it/mas-de-20-comandos-ffmpeg-para-principiantes.html, che mi ha dato lo
spunto per le prime semplici trasformazioni il cui successo ha contribuito ad aumentare il mio
interesse per un programma che avevo di default installato sul mio Sistema Operativo
fin dal 2005, anno in cui trovai su una rivista il disco di installazione della mia
prima versione Slackware 10.2 ossia il mio primo SO Linux. Nel caso non fosse
installato, scaricate i pacchetti secondo la vostra distribuzione Linux ed installatelo
e divertitevi ad usarlo!
Per brevità vi risparmio le difficoltà di chi perviene all'universo Linux da un so win,
ma voglio porre l'accento sulla completezza della distribuzione Linux, che fornisce tutti
gli strumenti possibili ed immaginabili che l'utente windows nemmeno si sogna, vivendo in
una matrix dove tutto è a pagamento persino la compressione e decompressione di un file,
per scelta di un ideatore che ha sempre preferito produrre virus per poi venderti
il software per poterti proteggere da essi, come tendenzialmente ha dimostrato nell'attuale
emergenza sanitaria.
Dal sito di cui al link
sopra i primi timidi comandi di trasformazione video.
OTTENERE INFORMAZIONI SUI FILE VIDEO AUDIO
Come esordio vi metto questo comando, che non è un vero proprio comando, visto che restituisce
un errore, ma può essere utile, per le manipolazioni più complesse, quando sia necessario
conoscere la struttura metadati del file audio o video:
Non ho stampato tutto l'output console di questo comando perché è davvero molto lungo,
ma soltanto la parte iniziale che è il comando stesso e la parte finale, che sono i
"METADATI", in questo caso del video complex.mkv. Come ho evidenziato l'errore
è avere omesso l'output file, in quanto quasi tutti i comandi ffmpeg prevedono
uno o più input sui quali "lavorare" ed i cui risultati di detto lavoro
vengono riversati nel file di output.
TRASFORMAZIONE VIDEO IN FORMATO DIVERSO per youtube o altre piattaforma:
ffmpeg -i input.mp4 -q:a 0 -q:v 0 output.flv
TRASFORMAZIONE VIDEO A QUALITÀ DEFINITA
La cosa va fatta per gradi, siccome la funzione ffmpeg che cattura schermo, ad esempio,
funziona bene se si producono video in formato.mkv, a volte si rendono necessarie molte modifiche
puntuali, per poter, ad esempio concatenare dei file video, è necessario che abbiano lo stesso
formato di risoluzione e ratio. Ecco il motivo del primo comando per conoscere i
metadati, comando che sembrerebbe un errore.
La seguente modifica la risoluzione e ratio DAR:
ffmpeg -i input.mkv -vf scale=1368:768,setdar=1:1 output.mkv
(o altri formati e ratio. Può essere anche setsar=1:1 per modificare ratio SAR)
Questa questione della trasformazione dei formati diverrà più chiara in seguito, quando si affronterà
il problema della CONCATENAZIONE di più video insieme per formare un video composto da frammenti
girati in momenti e situazioni diverse. Finché si lavora con video provenienti dalla stessa
camera, non sussistono problemi di sorta. Ma se si devono mettere insieme, ad esempio, video
girati con device diversi tra loro, allora nascono problemi di concatenazione anche
importanti, ma sempre risolvibili con qualche comando ffmpeg ad hoc.
MODIFICARE L'AUDIO
La seguente per modificare l'audio basso di un filmato o di un audio; a seconda dei valori di
"volume=0.5" inferiori o maggiori di uno, l'audio viene incrementato oppure
decrementato:
ffmpeg -i input.mp4 -q:v 0 -filter:a 'volume=2.5' output.mp4 ffmpeg -i input.mp3 -q:a 0 -filter:a 'volume=0.04' output.mp3
Può accadere questa necessità quando un audio risulta troppo basso o troppo alto. Nel caso
invece che l'audio originale del video sia inservibile, si rende necessario eliminarlo
ed esso potrà essere reinserito registrandone un altro migliore per sostituire il primo.
TOGLIERE L'AUDIO ORIGINALE DI UN VIDEO
Questo può rendersi necessario quando l'audio originale del video non è buono,
oppure quando fate
dei video dalle immagini. Se usate le opzioni con audio per avere il sonoro (
vedi), mentre
ffmpeg esegue per esempio la creazione di un video da una o più immagini, registra
l'audio dal microfono di sistema. Questo può essere utile se volete registrere direttamente
l'audio mentre effettuate questa trasformazione, ma risultare nociva se passa un'ambulanza
o se vi viene da tossire. Una alternativa potrebbe essere quella di azzerare il microfono di sistema
mentre state facendo un'operazione come questa, ma se scordate di farlo è sempre possibile azzerare
l'audio e/o sostituirlo.
La seguente TOGLIE l'audio di un filmato (provato funziona):
ffmpeg -i inputconaudio.mp4 -an outputtoltoaudio.mp4
SALVARE L'AUDIO DI UN FILE VIDEO IN UN FILE AUDIO
ffmpeg -i input.MP4 -vn audio.mp3
AGGIUNGERE AUDIO AD UN VIDEO
Il seguente comando unisce un audio ad un
video. Occorre però fare attenzione che audio e video siano della stessa durata,
altrimenti prolunga il video nell'immagine finale ripetuta fino al termine dell'audio:
ffmpeg -i inputvideosenzaaudio.mp4 -i audio.mp3 -map 0 -map 1 -codec copy outputvideoconaudio.mp4 ffmpeg -i inputvideo.mp4 -i imputaudio.mp3 -map 0 -map 1 -codec copy output.mp4
AGGIUNGERE TRACCIA MUSICALE AD UN VIDEO SENZA SOVRASCRIVERE AUDIO ORIGINALE
ffmpeg -i inputvideo.mp4 -i inputmusic.mp3 -map 0:v -map 1:a -c:v copy -shortest outputvideosound.mp4
Questa sopra copre l'audio originale e accorcia il video alla lunghezza della traccia audio, se la traccia audio è più corta del video ( -shortest). Per aggiungere la traccia musicale senza cancellare l'audio originale del video, servirsi della seguente:
ffmpeg -i input.mp4 -i inputsound.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -ac 2 -shortest outputvideosound.mp4
TAGLIO (video ed audio)
Allora, di seguito, il taglio dell'audio per il tempo necessario:
ffmpeg -ss 0 -t 10 -i inputaudio.mp3 -codec copy audio10sec.mp3 ffmpeg -ss 01:24:00 -t 77 -i alba.mp4 -codec copy albatagliata.mp4
L'opzione -ss 01:24:00 specifica il punto di inizio del taglio, mentre l'opzione
-t 77 indica il numero di secondi dal punto di inizio: il file di output
parte dal punto inizio per il tempo in secondi -t specificato.
CONCATENAZIONE
La concatenazione di file dello stesso tipo e formato è piuttosto semplice. Si crea un file testo
con l'elenco dei file da concatenare strutturato nel file "mylist.txt", nel seguente modo:
#questo è un commento file 'video_1.mp4' file 'video_2.mp4' file 'video_3.mp4'
Dopo di che, con il comando seguente, la concatenazione avviene in un lampo.
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav
Salvo che con video di qualità diversa si creano molti problemi. Ne approfitto per indirizzare al
sito wiki di ffmpeg, dove si trova una ricca documentazione per la quale serve soltanto
la pazienza di leggere con attenzione:
https://trac.ffmpeg.org/wiki
Per il nostro problema di concatenazione, ho trovato sufficienti spiegazioni su
https://trac.ffmpeg.org/wiki/Concatenate#differentcodec
Di seguito il comando per unire 4 video, con l'attenzione che abbiano lo stesso formato video e
ratio, altrimenti il comando dà errore. Nel qual caso si veda più in alto la
TRASFORMAZIONE VIDEO A QUALITÀ DEFINITA.
ffmpeg -i input1.mp4 -i input2.mkv -i input3.mkv -i input4.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0][3:v:0][3:a:0]concat=n=4:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" complex.mkv
Questo comando sortisce concatenazioni impeccabili se i prerequisiti sono come detto sopra.
La penultima difficoltà consiste nel concatenare video di fronte e retro cellulare, che sono quelli che personalmente
mi hanno creato maggiori problemi. Sempre all'interno di questo problema esiste ancora la difficoltà
dell'orientamento, a seconda che usiamo per filmare il telefono in verticale oppure orizzontale.
Mentre l'ultima difficoltà consiste nell'utilizzare per la concatenazione video ottenuti con la webcam
del PC a video ottenuti con un'altra camera e/o con il telefono e, infine, video ottenuti catturando
lo schermo del proprio PC.
ffmpeg -i schermotel.mp4 -i retrotel.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" complex.mp4
Fronte e retro telefono si concatenano perfettamente con le opzioni di cui sopra, ma
entrambi con lo stesso orientamento del telefono.
Affrontiamo più sotto la complicata unione di un video catturato con il telefono verticale, con gli
altri due in orizzontale, il che viene trattato sotto la voce
ROTAZIONE VIDEO.
SOTTOTITOLI
Qui sotto un elenco di siti dove ho tratto le informazioni per i sottottitoli da aggiungere
ai video:
https://www.checksub.com/subtitle/srt-file-create-manually-automatically/
https://docs.fileformat.com/video/srt/
https://en.m.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options
https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
In linea di massima la questione dei sottotitoli viene risolta creando un file.srt che contiene
i dati dei sottotitoli come vedremo in seguito e si aggiungono con il seguente comando:
ffmpeg -i ffmpeg.mp4 -vf subtitles=ffmpeg.srt ffmpegsubtitles.mp4
Se il file .srt ha lo stesso nome del file video, estensione a parte, normalmente i lettori come
VLC leggono automaticamente i sottotitoli.
Qui sotto l'esempio del file .srt che contiene i sottotitoli:
ffmpeg -i sub.srt sub.ass
Come si potrà vedere aprendo il file sub.ass nell'area più in basso.
Questo è altamente strutturato e dovrebbe
essere possibile
modificare font e colore di esso, ma la modifica manuale che ho tentato non ha sortito
l'effetto desiderato: codificando il rosso ottengo sottotitoli blu. Per impostazione naturale i
sottotitoli sono in bianco. Vengono però riportate le indicazioni HTML che riguardano
bold, italic e underline che si possono immettere nel file.srt. Il font style viene ignorato.
In ogni caso, riuscendo a capire come modificare correttamente il colore, esso è impostato per tutti
i sottotitoli del video e non singolarmente per ogni voce di sottotitolo.
CREAZIONE VIDEO DA SINGOLA IMMAGINE
La prima genera un video partendo dall'immagine raccomandate.jpg della durata di (-t 45)
45 secondi senza traccia audio:
ffmpeg -loop 1 -i raccomandate.jpg -c:v libx264 -t 45 -pix_fmt yuv420p outracc.mp4
Mentre la seguente crea la traccia audio che viene registrata, volendo, dal microfono di sistema durante la creazione del video da una immagine. Altrimenti è sempre possibile aggiungere un audio nuovo (vedi AGGIUNGERE AUDIO AD UN VIDEO) al video generato come sotto:
ffmpeg -f alsa -ac 2 -i pulse -framerate 25 -loop 1 -i IMG-20210804-WA0001.jpg -q:a 0 -q:v 0 -c:v libx264 -t 45 -pix_fmt yuv420p affamati.mp4
Così, quando si devono fare cose di questo genere si può registrare contemporaneamente l'audio.
Sul sito di
ffmpeg viene illustrato anche il modo di creare video con molte immagini, ma io
non sono riuscito ad ottenere un buon risultato, con nessuno dei metodi descritti.
Così per fare un video con una serie di
immagini ho fatto singoli video da ogni immagine poi li ho uniti in un solo video.
CATTURA SCHERMO CON AUDIO
ffmpeg -f alsa -ac 2 -i pulse -r 25 -s 1368x768 -f x11grab -i :0.0+0,0 -vcodec msmpeg4v2 -qscale 2 -framerate 25 -q:a 0 -q:v 0 definitiv2.mkv
Usare tassativamente formato .mkv indi eventualmente convertire dopo.
Ho praticamente tribolato due giorni pieni a catturare lo schermo intero, del quale occorre conoscere la
risoluzione (il mio ovviamente è -s 1368x768) con
una riceca qui:
https://www.linuxquestions.org/questions/linux-software-2/ffmpeg-not-capturing-desktop-4175642373/
Per catturare solo una parte dello schermo ho dovuto rinunciare alla risoluzione dello
schermo e catturare solo il video che sta in una pagina web, come quando si guarda una pagina youtube:
ffmpeg -f alsa -ac 2 -i pulse -r 25 -f x11grab -i :0+42,114 -vcodec msmpeg4v2 -qscale 2 -framerate 25 -q:a 0 -q:v 0 elioc0ses.mkv
Se non si conoscono esattamente le coordinate dell'area che si intende catturare si può
procedere per prove ed errori, fino a che si ottiene un video che catturi esattamente quello che si vuole.
WEBCAM
ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -t 0:10 webcam.mkv
Naturalmente occorre appurare che la vostra webcam sia riconosciuta dal sistema, ossia che il device /dev/video0 esista nel sistema. Un modo per appurarlo consiste nel digitare sulla vostra console il comando:
$v4l2-ctl --list-devices HP Webcam (usb-0000:00:15.0-5): /dev/video0
Questo è stato uno dei miei crucci nel tentativo di fare lo streaming con la mia action cam Sony wi-fi: il fatto che si sia connessi tramite wi-fi oppure tramite USB, non significa automaticamente condividere i files e fare lo streaming, da detta camera, come si può vedere qui:
$lsusb
Bus 002 Device 002: ID 1058:25a2 Western Digital Technologies, Inc. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 005: ID 04f2:b5db Chicony Electronics Co., Ltd Bus 001 Device 004: ID 8087:0aa7 Intel Corp. Bus 001 Device 008: ID 054c:08b6 Sony Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Come si vede in questo caso, il SO riconosce la camera ed è possibile trasferire files, ma
non si può fare lo streaming da essa.
Chiusa la parentesi per il riconoscimento dei devices connessi e riconosciuti dal
sistema, consideriamo che il precedente comando per la webcam,
cattura il video senza suono. Ma, aggiungendo i comandi alsa pulse:
ffmpeg -f alsa -ac 2 -i pulse -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 webcam.mkv
OK! Con l'aggiunta abbiamo anche l'audio. Per il tempo di registrazione o si indica -t [secondi],
come fatto nel primo comando sopra,
oppure esiste un comando per stoppare: premere q per stoppare
la registrazione. Ho però constatato che occorre attendere un tantino
di tempo, circa 10 secondi perché premendo q stoppa subito e a volte rimane tagliato
il finale. Se il video, ritardando a premere q risultasse
troppo lungo, è sempre possibile tagliarlo alla fine, come illustrato più sopra.
Dal sito
https://ffmpeg.org/ffmpeg-all.html#video4linux2_002c-v4l2:
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
Il comando ffplay mostra l'output webcam in una finestra
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
(cattura in out.mpeg)
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
Il comando "traspose=2" ruota il
video di 180°. Il valore 1 ruota di 90°
https://codepre.com/it/como-rotar-videos-usando-ffmpeg-desde-la-linea-de-comandos.html
Infine la soluzione ad un annoso problema, quello dei video
ripresi con diversi orientamenti del telefono: verticale o orizzontale. Questa faccenda è un pochino
complessa ed ho dovuto metterci del mio in quanto l'autore del sito sotto faceva ruotare il video di
90° ed io mi trovavo punto ed a capo col problema di partenza. Quindi omettendo la rotazione
sono riuscito a ricavare un video ricavato da registrazione col telefono in verticale,
da unire agli altri del telefono catturati col telefono in
orizzontale.
https://www.rigacci.org/wiki/doku.php/doc/appunti/linux/video/fix_smartphone_portrait_videos
Si tratta di una soluzione di compromesso per video girati con telefono in verticale, ossia creare destra
e sinistra
sfocate del video originale (cosa che i programmi grafici video fanno). È una faccenda un po'
complessa in diversi passi:
1: Si ritaglia una sezione centrale del video che vada bene in altezza per il video orizzontale
2: si crea un finto background annebbiando la regione ritagliata e la si stira a 16:9 ratio
3: si sovrappone la prima regione ritagliata del video sopra il finto retroscena 2
https://devdev.it/ritagliare-crop-un-video-con-ffmpeg-975/
1:
ffmpeg -i verticale.mp4 -vf "crop=1080:960:0:480" VERTIC.mp4
(misure per video mio telefono:)
ffmpeg -i verticale.mp4 -vf "crop=W:H:x:y" VERTIC.mp4
W = larghezza H = altezza x = coordinata orizzontale in pixel dalla quale iniziarà il ritaglio y = coordinata verticale in pixel dalla quale iniziarà il ritaglio
2:
ffmpeg -i VERTIC.mp4 -c copy -metadata:s:v:0 rotate=0 tmp_norotate.mp4
2/bis (crea png per extra larghezza):
convert -size 768x768 -define "gradient:bounding-box=768x38+0+0" -define "gradient:vector=0,37,0,0" gradient:none-black -define "gradient:bounding-box=768x768+0+730" -define "gradient:vector=0,730,0,767" gradient:none-black -composite -channel a -negate tmp_mask.png
E infine:
ffmpeg -i VERTIC.mp4 -loop 1 -i tmp_mask.png -filter_complex "[0:v]split [a][b];[a]crop=720:720:0:280,scale=768:768,setdar=768/768 [crop]; [b]crop=720:720:0:280,scale=1366:768,setdar=16/9,avgblur=54 [back]; [1:v]alphaextract [mask]; [crop][mask]alphamerge [masked]; [back][masked]overlay=299:0" video_out.mp4
Sono riuscito dopo molti tentativi ad ottenere il video in verticale come volevo perché
l'autore del sito aveva inserito transpose=1 che mi ruotava il video.
A modo mio...
Ma giunto a questo punto devo ammettere di non averci capito molto dei passaggi 2 e 3, così come sono stati fatti, con più operazioni contemporaneamente, come l'estensione del video ricavato dal passo 1, la creazione di un fondo annebbiato e la sovrapposizione dei due video. Ho cercato quindi di fare un passo alla volta: dal video del passo 1 ho allargato il video:
ffmpeg -i VERTIC.mp4 -vf scale=1920:1080,setdar=16:9 vertallungato.mp4
come descritto al punto TRASFORMAZIONE VIDEO A QUALITÀ DEFINITA, tanto per capire cosa stavo facendo. Infine ho applicato a quest'ultimo video il filtro "blur", anche se non ne capisco bene la sintassi, ma mi si perdoni essendo un novellino:
ffmpeg -i vertallungato.mp4 -q:a 0 -filter_complex "[0:v]boxblur=10[bg];[0:v]crop=60:60:10:10[fg];[bg][fg]overlay=100:500" -map 0:v annebbiatovideo2.mp4
Comando tratto da
https://ottverse.com/blur-a-video-using-ffmpeg-boxblur/
Questo comando, perlomeno ha determinato quello che andavo cercando, ossia il video di cui al
punto precedente è stato trasposto in un video annebbiato, che sarebbe lo sfondo di base
per inserire il video più piccolo ritagliato dalla ripresa verticale del telefono.
Rimarrebbe da sovrapporre i due video per ottenere il risultato precedente, ma sono stanco e
non voglio tediare eventuali lettori più a lungo. Credo che avendo affrontato molti
temi dell'uso di ffmpeg, ognuno possa approfondire dove ne sente necessità.
Questi passaggi sono documentati dalle immagini che vedete.
LOGO IN VIDEO
Se volete inserire nei vostri video un piccolo logo in png:
ffmpeg -i video.mp4 -i ../logovideo.png -filter_complex "overlay=20:20" outputconlogo.mp4
Tratto quest'ultimo da:
https://arccoder.medium.com/ffmpeg-add-a-logo-on-video-bf1f4652792a
ESTRARRE FOTOGRAMMI DA VIDEO
Quest'ultima cosa non l'avevo cercata per esigenze dei miei video, ma mi è
stata richiesta così ho trovato il seguente comando che funziona.
ffmpeg -i myvideo.mp4 -filter:v fps=fps=1/4 shot/foto_%d.png
Un accorgimento per scegliere più o meno scatti, è quello di agire
sul denominatore della frazione "fps=1/4" quanto più il
denominatore cresce, più diminuisce il numero degli scatti. Fare dei tentativi
per ottenere il vostro numero desiderato.
Ovviamente questa piccola wiki non è completa, ma è tutto quello che sono riuscito ad
imparare da me e la voglio condividere con quanti hanno la passione dei video. Mancherebbe
ancora come ottenere delle animazioni .gif da un video, ma al momento non era in cima
ai miei interessi. Mancherebbe la sovrapposizione su un solo video di diversi video
che si contendono un rettangolino dello schermo...Si può fare di tutto con questo
comando!
Altra ovvietà, quando sono necessari sempre certi definiti passaggi per la trasformazione e
mixaggio dei video, è sempre possibile disporre i comandi qui illustrati,
in un file di shell bash, ma questo è un altro discorso, un'altra wiki eventualmente,
ma chi fosse interessato alla programmazione della shell in rete ci sono infinità
di esempi. Tenendo presente che tutti i comandi eseguibili da linea di comando sono
altresì eseguibili in un programma.
Un'ultima raccomandazione. Sottotitoli e logo devono essere l'ultima operazione che fate sui vostri
video, altrimenti potrebbero non essere riportati in elaborazioni successive, a meno di fissare
definitivamente i due nei codec del video, cosa che non ho ancora verificato. Potrebbe
essere che i sottotitoli fissati col file.ass siano permanenti, ma quelli con file.srt non lo sono,
anche se, avendo video e file.srt lo stesso nome, i sottotitoli vengono letti dai lettori video.
Riassumendo in due righe. Per prima cosa rendere i video da mixare possibilmente con
uguali METADATA. Mettere audio prima o dopo del montaggio non ha importanza. Penultimo il
fissaggio di un vostro logo (anche se credo possa essere messo nei singoli video)
ed infine i sottotitoli. A questo proposito, quando riuscirò
ad ottenere sottotitoli scorrevoli aggiornerò questa wiki.
Spero in futuro, se risolverò il problema dello streaming dalla mia Sony ActionCam
HDR_AS30 di postarvi la soluzione.
Vi abbraccio tutte e tutti.
Vi voglio bene.
Claudio.
Articolo n.186: ffmpeg.php
Sito: chifelio
Tema: 27 - Tecniche di programmazione informatica
Data: 2022-04-25
_______________________________
Dopo aver premuto "INVIO", verrai reindirizzato ad una pagina
nella quale devi postare le lettere delle immagini che appaiono,
per dimostrare di non essere un robot.
Se tutto va a buon fine, verrai nuovamente reindirizzato
alla pagina che hai commentato, con in fondo,
dopo questo "form",
il tuo nuovo commento.
Tengo molto ad avere commenti e riscontri,
anche, soprattutto, da chi non concorda con quanto scrivo.
Il fatto di dover inserire la mail
non ti spaventi: NON SARAI PERSEGUITATO DA NESSUNA "MAILING LIST", ne' tantomeno, la tua mail sarà
venduta a scopo commerciale ne' pubblicata.
Ricordo brevemente le regole base di qualsiasi blog:
Niente insulti e volgarità (verranno cancellati commenti di questo tipo!).
Home page
Scrivere è esternare il proprio pensiero agli altri, al di là del tempo e dello spazio che ci separano.
Il pensiero non è un prodotto finito, ma un processo in divenire, sempre incompiuto e perfettibile.
Scrivere è un contributo a migliorare questo nostro Mondo.
Pensare un mondo migliore è un atto d'amore verso gli altri.
Pensare in tanti un mondo migliore è già un 50% della sua realizzazione.
Giovanni
La proprietà letteraria degli scritti riportati in questo sito è di Claudio Chicco,
Via Roma, 30
PAESANA (CN), il quale ne permette la la citazione di brani, citando fonte
ed autore e NON ne permette il SUNTO, se non in una versione concordata con l'autore.
Per questo fine usare l'apposito form "
contatti".
Gli articoli pubblicati nel sito possono essere non attendibili. Non mi assumo alcuna responsabilità per contenuto
degli articoli di altri autori. La responsabilità dei testi e del loro contenuto è unicamente dei rispettivi autori.
Eventuali commenti postati sono a responsabilità di
chi li ha postati.
Questo sito NON viene aggiornato con regolarità periodica,
per cui NON può essere considerato una testata giornalistica di informazione. Quello che viene espresso
dall'autore
è libera opinione dello stesso autore, garantita come diritto dall'Art.21 della Costituzione Italiana.