(Update) Inserire logo in un video con FFmpeg

 

                      

 

Questo è un'aggiornamento ad un post fatto un po di tempo fa, che parlava su come abilitare il filtro per poter inserire un logo in un video. Siccome FFmpeg è in continuo sviluppo, è normale che ci siano dei cambiamenti, come l'aggiunta o la rimozione di alcune cose. Nel caso specifico mi sono appena accorto che il comando precedente non funziona più, quindi elencherò 5 comandi "tipici".

 

La mia versione di FFmpeg è quella nei repo unstable:

 

ffmpeg version 0.8.7, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 22 2011 07:59:05 with gcc 4.6.2
  configuration: –prefix=/usr –extra-cflags='-Wall -g ' –cc='ccache cc' –enable-shared –enable-libmp3lame –enable-gpl –enable-nonfree –enable-libdirac –disable-decoder=libdirac –enable-libvorbis –enable-pthreads –enable-libfaac –enable-libxvid –enable-postproc –enable-x11grab –enable-libgsm –enable-libtheora –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libx264 –enable-libspeex –enable-nonfree –disable-stripping –enable-libschroedinger –disable-encoder=libschroedinger –enable-version3 –enable-libopenjpeg –enable-libvpx –enable-librtmp –enable-avfilter –enable-frei0r –enable-libopencv –enable-libfreetype –enable-libvo-aacenc –disable-decoder=amrnb –enable-libvo-amrwbenc –enable-libaacplus –libdir=/usr/lib/i386-linux-gnu –enable-libdc1394 –disable-altivec –disable-armv5te –disable-armv6 –disable-vis –shlibdir=/usr/lib/i386-linux-gnu
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  8. 0 / 53.  8. 0
  libavformat  53.  5. 0 / 53.  5. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0

 

Logo in alto a sinistra:

ffmpeg -i inputvideo.avi -vf "movie=logo.png [edm]; [in][edm] overlay=10:10 [out]" outputvideo.avi

 

Logo in alto a destra:

 

ffmpeg -i inputvideo.avi -vf "movie=logo.png [edm]; [in][edm] overlay=main_w-overlay_w-10:10 [out]" outputvideo.avi

 

Logo in basso a sinistra:

 

ffmpeg -i inputvideo.avi -vf "movie=logo.png [edm]; [in][edm] overlay=10:main_h-overlay_h-10 [out]" outputvideo.avi

 

Logo in basso a destra:

 

ffmpeg -i inputvideo.avi -vf "movie=logo.png [edm]; [in][edm] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" outputvideo.avi

 

invece per ottenere un' effetto come il primo video, bisogna scalare l'immagine all'altezza del video, e poi inserirla:

 

ffmpeg -i inputvideo.avi -vf "movie=logo.png [edm]; [in][edm] overlay=0:0 [out]" outputvideo.avi

 

enjoy 😉

Cambiare il volume di un file audio/video con FFMPEG

 

A volte capita di avere un file audio/video con un volume troppo alto oppure troppo basso, per cambiarlo usando FFMPEG, può servire qualcosa di simile, e cioè inserire l'opzione -vol:

 

$ ffmpeg -i video.avi -vol 100  video_finale.avi

 

oppure:

 

$ ffmpeg -i file.mp3 -vol 100 -ab 128 file_finale.mp3

 

 

enjoy 😉

Unire video con risoluzione diverse usando FFMPEG e Mencoder (Solved)

 

 

 

Spesso e volentieri mi è venuta la voglia di fare un collage con più video, e ci ho sempre rinunciato, perchè mi scocciava settare uno per uno la stessa risoluzione, poichè se si cerca di unire video con differenti risoluzioni, ci si imbatte nell'errore seguente:

 

New video file has different resolution or colorspace than the previous one.
FATAL: Cannot initialize video driver.

 

quindi il passo è quello di settare nella cartella dei video .AVI, la stessa risoluzione per tutti, ed allo stesso tempo, convertirli tutti ad usare gli stessi codecs audio/video. Io ho preso 4 spezzoni di video differenti, con le seguenti risoluzioni:

 

320 × 240

384 × 288

320 × 136

480 × 360

 

quindi ho scelto di portarli tutti in hd720 (1280×720), ed ho usato il seguente comando:

 

 

$ for i in *.avi; do ffmpeg -y -i "$i" -f avi -vcodec mpeg4 -b 8000000 -acodec ac3 -ab 128000 -s hd720 $i.avi; done

 

 

a questo punto si possono unire i 4 video:

 

 

$ mencoder *.avi -oac mp3lame -ovc xvid -xvidencopts pass=1 -o video_finale.avi

 

 

ps: un omaggio alle più belle, Monica Bellucci, Sharon Stone. Charlize Theron 🙂

 

enjoy 😉

4 comandi per ottenere informazioni audio/video

 

Quattro comandi utili per avere informazioni su un file video. Bisogna avere installato mplayer, ffmpeg e transcode.

 

$ mplayer -frames 0 -identify video.avi

$ tcprobe -i video.avi

$ ffmpeg -i video.avi

$ file video.avi

 

enjoy 😉

Comprimere video avi mp4 con FFmpeg

 

Quello della compressione di file video di grosse dimensioni è un bel problema, ed il giusto compromesso per una qualità accettabile è abbastanza difficile da trovare. Certo il tutto dipende dall'uso che se ne fà di quel video, ma se ci si accontenta di una piccola perdità di qualità per un abbattimento della dimensione che va dal  50 al 70%, allora come al solito bisogna scomodare FFmpeg. La situazione descritta l'ho sperimentata su due video, uno in avi l'altro in mp4.

 

avi:

$ ffmpeg -i video.avi -s 320×240 -vcodec msmpeg4v2 compresso.avi

 

mp4:

$ ffmpeg -i video.mp4 -acodec mp2 compresso.mp4

 

 

enjoy 😉

Aggiunto FFmpeg con –enable-filter=movie nel repository

 

 

Avevo in passato fatto una guida su come compilare ffmpeg con l'opzione –enable-filter=movie, indispensabile per poter inserire in un video un'immagine personale. Dato che mi è stato chiesto da più utenti la condivisione del pacchetto .deb, ho quindi deciso di inserirlo nel mio repository. Insieme ad ffmpeg ho anche inserito x264. Una volta installato, il comando da eseguire è il seguente:

 

$ ffmpeg -i video.avi  -vf "movie=0:png:immagine.png [logo]; [in][logo] overlay=10:10:1" output.avi

 

 

enjoy 😉

Nautilus script per un perfetto screencast

 

Volevo segnalare un ottimo script per Nautilus, che aiuta ad  eseguire in tutta comodità screencast video o audio/video, il tutto con una bella ed ordinata gui, fatta con zenity e sfruttando chiaramente ffmpeg. Questo script dal nome ZDesktopRecorder è stato creato da c2asr, in seguito ad un post da me fatto dal titolo "Screencast Perfetto di una singola finestra con FFmpeg", che dire, se non che questa è la classica ciliegina sulla torta 🙂 Quindi ringraziando per la collaborazione di nuovo c2asr invito a provarlo.

 

1) Download

2) Download

enjoy 😉

Screencast audio-video ad alta qualità con FFmpeg

 

Ed eccomi ancora quà con l'ennesima guida su FFmpeg, sì lo sò, sono fissato, ma come sapete è uno dei tools che amo di più, per questo ho deciso di scrivere il più possibile su ogni esperimento che faccio, sia per quanto riguarda l'utilizzo dello screencast, sia per quanto riguarda le opzioni di conversione in generale. Ho già dedicato diversi post allo screencast con FFmpeg, ma adesso ho voluto farne uno cercando la migliore qualità audio/video possibile. La base di partenza è sempre lo script record.sh del post precedente, ma modificato per migliorare sensibilmente la qualità dello screencast:

 

#!/bin/sh

INFO=$(xwininfo -frame)

WIN_GEO=$(echo $INFO | grep -oEe 'geometry [0-9]+x[0-9]+' | grep -oEe '[0-9]+x[0-9]+')
WIN_XY=$(echo $INFO | grep -oEe 'Corners:\s+\+[0-9]+\+[0-9]+' | grep -oEe '[0-9]+\+[0-9]+' | sed -e 's/\+/,/' )

ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -r 30 -s $WIN_GEO -i :0.0+$WIN_XY -acodec pcm_s16le -vcodec libx264 \
-vpre lossless_ultrafast -threads 0 -y screencast.mkv

 

per chi usa PulseAudio, sostituire:

 

-f alsa -ac 2 -i hw:0,0

con:

-f alsa -ac 2 -i pulse

 

c'è da dire che questa soluzione ha il "difetto" di creare screencast di grosse dimensioni, quindi nel caso di upload su youtube bisogna prepararsi all'ottimizzazione, cercando sempre di mantenere lo standard alto. Quindi il comando seguente oltre ad ottimizzare il file per youtube, ne riduce sensibilmente le dimensioni:

 

 

quello sopra anche se lunghino è un solo comando. Credo che il tutto sia ancora migliorabile, dato che ho notato delle piccole imperfezioni.

 

ps: il video sopra è volutamente muto.

 

enjoy 😉