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 😉

Screencast Perfetto (quasi) con Recordmydesktop e Mencoder

 

 

 

 

Ho già parlato altre volte per quanto riguarda gli Screencast, soprattutto adoperando FFMPEG, che scritto per inciso mi ha sempre soddisfatto in tutte le occasioni. Questa volta però vorrei scrivere due righe per quanto riguarda gtk-recordmydesktop, che non mi è mai piaciuto, in quanto ho sempre trovato scomodo il suo utilizzo quando si trattava di registrare una singola finestra, ed in più mi è sembrato lento nel salvataggio dello screencast. Comunque per farla breve, ho approfondito un pò di più la sua conoscenza, e per quanto mi riguarda ho trovato il giusto compromesso. L'idea di partenza quindi è quella di effettuare lo screencast di una singola finestra, e contemporaneamente di convertirlo in AVI, questa volta utilizzando mencoder.

 

Senza microfono:

 

$ recordmydesktop --no-sound -o "video.ogv" --windowid $(xwininfo | egrep 'Window id' | awk '{print $4}') && mencoder video.ogv -ovc xvid -xvidencopts pass=1 -o video.avi

 

Con Microfono:

 

$ recordmydesktop --device hw:0,0 -o "video.ogv" --windowid $(xwininfo | egrep 'Window id' | awk '{print $4}') && mencoder video.ogv -ovc xvid -oac mp3lame -xvidencopts pass=1 -o video.avi

 

per salvare Ctrl-Alt-S, per annullare Ctrl-C.

 

se non si indica il device, ed il microfono è configurato e funzionante, di default registra anche l'audio, quindi è indispensabile per uno screencast muto l'opzione --no-sound. Per chi invece usa pulseaudio, credo che basti inserire --device pulse al posto di --device hw:0,0

 


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 😉

Creare un video da più immagini usando Mencoder

 

 

 

 

Come creare un video partendo da una serie di immagini?….semplice, usando Mencoder. Il video sopra è composto da 20 immagini jpg,  ed il comando utilizzato è il seguente.

 

$ mencoder "mf://*.jpg" -mf type=jpg:fps=3 -ovc lavc -o 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 😉

Registrare streaming Moonlight con mplayer

 

 

Alcuni video per poterli visualizzare, come è noto serve il plugin Silverlight di Microsoft, che è disponibile per Windows e Mac, mentre per Linux ci si affida a Moonlight. In Italia la televisione di Stato, (notare che non cito la sigla volontariamente) innominablile, ha i suoi canali dedicati, dove vedere video, film, e programmi vari. Per poter registrare lo streaming basta eseguire questi passi, almeno finchè funziona 🙂 Andare sul canale e scegliere il video da guardare/scaricare, recarsi nella cartella /tmp dove troveremo una nuova cartella dal nome moonlight-download o qualcosa di simile, recuperare l'indirizzo dello streaming, per esempio dall' icona audio/video, basta aprirla con un editor di testo. A questo punto siamo pronti a registrare lo streaming del programma che c'interessa. L'indirizzo deve terminare prima del punto interrogativo "?", e sostituire https con mms.

 

Il comando è il seguente:

 

$ mplayer -dumpstream mms://INDIRIZZO/STREAMING/123456.wmv -dumpfile registrato.avi

 

il comando si bloccherà su Stream not seekable, attendere, il  file sara completamente scaricato quando si otterrà un output simile:

 

Stream not seekable!
Ahhhh, stream_chunck size is too small: 4
Error while parsing chunk header
Core dumped ; )
Exiting… (End of file)

 

ps: non nominare la tv.

 

enjoy 😉

Convertire video rmvb in avi con Mencoder

 

Può capitare a volte d'imbattersi in file  RealMedia Variable Bitrate (RMVB), un formato molto usato in Asia. Per poterlo convertire in avi, bisogna installare mencoder, e poi eseguire un comando simile a questo:

 

$ mencoder file.rmvb -oac mp3lame -lameopts preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -ofps 25 -of avi -o file.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 😉

Skype Beta 2.2 su Debian Squeeze/Wheezy 64 bit

 

 

 

 

Scrivo solo due righe a proposito dell'aggiornamento di Skype alla versione Beta 2.2, giusto per segnalare che il pacchetto nell'area download del sito, dal nome  Debian 5+ 64-bit, funziona perfettamente su Debian Squeeze/Wheezy. Almeno si evita di usare questa procedura macchinosa. Per il resto Skype continua a considerare Linux, l'ultima ruota del carro.

 

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 😉