domenica 28 settembre 2008

FFmpeg per video su smartphone windows mobile 6

Oggi ho deciso di perdere qualche decina di minuti nel secondo round di uno scontro che avevo abbandonato tempo fa..

Infatti ho deciso di riprendere in mano ffmpeg e fare un secondo tentativo per capire come adattare i video per il dannato smartphone windows-based (quanto mai, ne ho dovuto effettuare un terzo hard reset in circa un anno..).

Comunque, dato che ormai lo sto pagando (visto che fa parte del contratto business) ogni tanto mi viene in mente di sfruttarlo il più possibile (vedi la voce su liferea hacking).

Su debian bisogna aggiungere prima di tutto il repository debian-multimedia, per avere più facilmente codec aggiornati/proprietari e software compilati in modo ottimale per certe operazioni.
Per la cronaca, installare ffmpeg da debian-multimedia manderà a puttane vlc.

Detto questo, ecco il comando che sto attualmente usando per effettuare l'encoding di un video qualsiasi in modo da poterlo vedere/sentire sullo smartphone:

> ffmpeg -i $input -s qvga -vcodec wmv2 -b 128k -r 24 -acodec wmav2 -ar 22050 -ab 64k $output.wmv

Quindi:
* dimensione: qvga, cioè 320*240
* video: wmv2 (la mia versione non ha wmv3) a 128kbps con 24 frame al secondo
* audio: wmav2 (si potrebbe provare mp3 o msmpeg4, ma la mia versione non li supporta, per cui per ora mi accontento) con audio sample rate 22050Hz e bitrate 64kbps)

$input può essere qualsiasi tipo di filmato supportato (quindi .mov . avi..) mentre $output è meglio che sia un .wmv, così il vostro amato smartphone eviterà di rompere troppo..

Per dare un'ordine di grandezza dell'output, ho fatto l'encoding di un .avi di 20 minuti da 160 MB:

> Duration: 00:20:30.00, start: 0.000000, bitrate: 1090 kb/s
> Stream #0.0: Video: mpeg4, yuv420p, 576x432 [PAR 1:1 DAR 4:3], 29.97 tb(r)
> Stream #0.1: Audio: mp3, 44100 Hz, stereo, 128 kb/s


ed il risultato è stato un file da 31MB.
Sicuramente c'è ancora margine di miglioramento, a partire dai codec audio, ma per ora è sufficiente così! :)

martedì 2 settembre 2008

Debian, apache2 e userdir

Un post rapidissimo per segnarmi una cosa che è sicuramente cambiata dall'ultima volta che ho configurato sotto debian apache httpd:

su altre distribuzioni linux, mod_userdir (quello necessario per fare localhost/~user , per intenderci) è compilato nel binario e già pronto all'utilizzo; molto spesso basta decommentare la direttiva UserDir all'interno del file di configurazione. Altre volte bisogna creare il link simbolico da mods-available a mods-enabled.

Invece oggi è stato ancora più semplice e decisamente più rapido:

mod_userdir non è abilitato di default, infatti mettendo la direttiva UserDir in httpd.conf genera un chiaro errore:

> Invalid command 'UserDir', perhaps misspelled or defined by a module not included in the server configuration

E dopo aver verificato che effettivamente non è tra i precompilati nel binario:

> erakis:/etc/apache2# apache2 -l
> Compiled in modules:
> core.c
> mod_log_config.c
> mod_logio.c
> prefork.c
> http_core.c
> mod_so.c

è bastato abilitare il modulo:
> erakis:/etc/apache2# a2enmod userdir
> Enabling module userdir.
> Run '/etc/init.d/apache2 restart' to activate new configuration!

e riavviare l'httpd.. Ora ha creato il link simbolico in mods-enabled con la direttiva per il caricamento (contenuta nel file userdir.load) e una configurazione standard (userdir.conf).

Quanti passi in avanti sono stati fatti dai tempi dell'apache 1.3 con il file di configurazione monolitico gigantesco con decine di direttive LoadModule da commentare/decommentare e tutte le direttive specifiche dei vari moduli messe insieme..