mercoledì 16 marzo 2011

Ffmpeg conversione video kodak playsport - 1

Convertire file con ffmpeg dalla Kodak Playsport...

DA .MOV A MPEG-4 CODIFICATO H.264
Premetto che utilizzo Ubuntu, comunque gli stessi problemi li ho riscontrati con Windows. I file contenuti sulla videocamera una volta scaricati sul pc non si vedevano (il video andava a scatti), così dopo alcune prove sono riuscito a convertirli con ffmpeg e in diversi formati.

P.S. Mentre scrivo ho scoperto con mplayer che il computer è troppo lento per visualizzare il video (anche se sembra funzionare) - dimenticavo stavo utilizzando mplayer per vedere i codec utilizzati per riprodurre il video, basta digitare:
--------------------------------------------------------
folletto@pingu:~$ mplayer 100_0001.MOV (nome del video della telecamera)
--------------------------------------------------------
A questo punto andiamo a leggere sul terminale i codec utilizzati da mplayer.

Un'altro sistema con Ubuntu è: click destro sul file video -> proprietà -> Audio/Video

Inanzitutto diamo una letta al manuale di ffmpeg digitando sul terminale:
----------------------------------------
folletto@pingu:~$ man ffmpeg
---------------------------------------
Per chi come me volesse tenere una copia del manuale su un file txt da consultare in qualsiasi momento può digitare:
-----------------------------------------------------------
folletto@pingu:~$ man ffmpeg > nome_file.txt
-----------------------------------------------------------
(sostituendo a nome file il nome che desideriamo dare al manuale)

Già che ci siamo possiamo consultare anche l'help:
------------------------------------
folletto@pingu:~$ ffmpeg -h
------------------------------------
e crearci un file .txt o leggere da terminale i vari formati o codec supportati da ffmpeg:
--------------------------------------------
folletto@pingu:~$ ffmpeg -formats
--------------------------------------------

Sotto a File formats troviamo i vari formati nei quali possiamo convertire (E encode) o decodificare (D decode), esempio .avi .mpg .3gp ecc...
Sotto a codecs troviamo i vari codec audio e video che possiamo utilizzare per decodificare e convertire i nostri file...

Ora vediamo una come iniziare:
i file della nostra kodak sono dei .MOV che utilizzano il codec H.264/AVC per il video e MPEG-4 AAC per l'audio.
Per convertirli in mpeg-4 dobbiamo dicitare quanto segue:
--------------------------------------------------------------------------------------------------------------------------------------
folletto@pingu:~$ ffmpeg -vcodec h264 -s 1280x720 -aspect 16:9 -r 60 -acodec aac -ar 48000 -i 100_0001.MOV -f mp4 -vcodec libx264 -s hd720 -aspect 16:9 -r 25 -sameq -acodec libmp3lame -ac 2 -ar 44100 -ab 128k nome_file.mp4
---------------------------------------------------------------------------------------------------------------------------------------

-vcodec = dopo questo inseriamo il tipo di codec da utilizzare, in questo caso h264 per la decodifica del file e libx264 per la conversione (libx264 è il codec per convertire il video in h264 supportato dai file mpeg-4)

-s = indica il formato del video 1280x720 del nostro video originale (in hd) e hd720 che ci restituisce un file con le stesse dimensioni.

-aspect indica le proporzioni del video se 4:3 o 16:9

-r = sono i frame per secondo (fps), in questo caso avendo registrato un video in movimento ho utilizzato 60fps quando ho registrato che poi ho convertito in 25 per il video convertito

-acodec come -vcodec ma per il canale audio del video, in questo caso aac (va bene anche libfaad) per il video da convertire e libmp3lame (mp3) per quello convertito.

-ar = campionatura audio, in origine 48000 Hz qua ridotta a 44100 Hz

Una volta inserite le opzioni per il file da convertire inseriamo il nome del file da convertire con -i nome_file.MOV (la kodak li salva come 100_0001.MOV)

-f = è il contenitore del nostro file, praticamente l'estensione del file convertito (che troviamo tra quelli di ffmpeg con ffmpe -formats), nel nostro caso .mp4

-ac = indica il numero di canali per l'audio (in questo caso stereo)

-ab = è il bitrate dell'audio in questo caso 128k (meglio impostarlo altrimenti ffmpeg di default lo imposta a 64k)

A questo punto non resta che inserire il nome del file in uscita: nome_file.mp4

Aspettare che il nostro pc converta il video e..... Pop corn, bibita e riguardare le nostre imprese in HD!


Video risoluzione 1280x720, 25fps
In questo primo caso sono partito da un file prelevato dalla playsport di 52,4 MB e ho ottenuto un file da 44,2 MB


Video risoluzione 1280x720, 60fps
In questo caso il video (utilizzando lo stesso video di prima) ha una dimensione di 82,9 MB, a causa di una maggior quantità di frame per secondo (60fps)

Ho utilizzato un video in movimento in modo da apprezzare la differenza, anche se minima...

Aggiornamento febbraio 2012


Dopo essere passato da Ubuntu ad ArchLinux, ed avendo quindi reinstallato tutto sul mio pc, mi sono accorto che l'ultima versione di ffmpeg lavora in maniere più semplice, quindi le istruzioni precedenti andranno modificate in questo modo:

--------------------------------------------------------------------------------------------------------------------------------------
folletto@pingu:~$ ffmpeg -i 100_0001.MOV -f mp4 -vcodec libx264 -s hd720 -aspect 16:9 -r 25 -sameq -acodec libmp3lame -ac 2 -ar 44100 -ab 128k nome_file.mp4
--------------------------------------------------------------------------------------------------------------------------------------

Basta semplicemente togliere le indicazioni relative al file in input, ora ffmpeg le rileva automaticamente senza nessun problema (prima aveva qualche problema...)



Buona conversione a tutti!

Nessun commento: