(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 😉

Ruotare video di 90-180-270 gradi con FFmpeg

 

Ultimamente ho avuto la necessità di ruotare un video fatto da me di 180 gradi, per intenderci la visione era sotto-sopra. Per una semplice visione del video non ci sono problemi, basta usare VLC, ed andare in: Strumenti-Effetti_Filtri-Effetti_Video-Geometria-Rotazione, e da qui possiamo ruotare il nostro video a piacimento. Per ruotare e quindi salvare il video, io come sempre mi sono affidato ad FFmpeg. Come prima cosa bisogna verifica se si hanno i filtri abilitati:

 

$ ffmpeg -filters

 

nel mio caso l'output restituisce:


Filters:
anull            Pass the source unchanged to the output.
anullsrc         Null audio source, never return audio frames.
anullsink        Do absolutely nothing with the input audio.
blackframe       Detect frames that are (almost) black.
copy             Copy the input video unchanged to the output.
crop             Crop the input video to width:height:x:y.
cropdetect       Auto-detect crop size.
drawbox          Draw a colored box on the input video.
fade             (null)
fifo             Buffer input images and send them when they are requested.
format           Convert the input video to one of the specified pixel formats.
fps              (null)
gradfun          Debands video quickly using gradients.
hflip            Horizontally flip the input video.
hqdn3d           Apply a High Quality 3D Denoiser.
negate           (null)
noformat         Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
null             Pass the source unchanged to the output.
overlay          Overlay a video source on top of the input.
pad              Pad input image to width:height[:x:y[:color]] (default x and y: 0, default color: black).
pixdesctest      Test pixel format definitions.
rotate           (null)
scale            Scale the input video to width:height size and/or convert the image format.
setdar           Set the frame display aspect ratio.
setpts           Set PTS for the output video frame.
setsar           Set the pixel sample aspect ratio.
settb            Set timebase for the output link.
slicify          Pass the images of input video on to next video filter as multiple slices.
split            (null)
transpose        Transpose input video.
unsharp          Sharpen or blur the input video.
vflip            Flip the input video vertically.
yadif            Deinterlace the input image
buffer           Buffer video frames, and make them accessible to the filterchain.
color            Provide an uniformly colored input, syntax is: [color[:size[:rate]]]
movie            (null)
nullsrc          Null video source, never return images.
nullsink         Do absolutely nothing with the input video.

altrimenti bisogna ricompilare FFmpeg come in questa mia guida, oppure usare quello presente nel mio repository. Comunque i comandi sono i seguenti:

 

$ ffmpeg -i input.avi -vf vflip output.avi

 

oppure:



$ ffmpeg -vf "rotate=90" -i input.avi output.avi

$ ffmpeg -vf "rotate=180" -i input.avi output.avi

 

e così via, basta cambiare solo i gradi.

 

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 😉