Ovvero: come farsi in casa, una piccola piattaforma di publishing video in flash, come va tanto di moda ora, con strumenti liberi.
Cosa ci serve
Un po’ di software: ffmpeg, lame, un flash player (suggerisco flowplayer), flvtool2. I primi due, sono di norma disponibili nella vostra distribuzione (ma aspettate un attimo), gli altri due vanno recuperati nei rispettivi siti (link in fondo).
Un po’ di informazioni:
1. alcune distribuzioni, tra cui debian, forniscono una versione di ffmpeg senza il supporto mp3 (che è patent). Il supporto mp3 è un requisito per produrre file di tipo flv. Per questa ragione, non potete prescindere, che io sappia da un encoder mp3. Le soluzioni sono quelle di prendere ffmpeg altrove, tipicamente da debian-multimedia (sempre in fondo), ovvero i pacchetti unofficial di Marillat. Per lo stesso motivo, lame non è nemmeno disponibile in debian.
2. se volete creare un vero sistema di automazione dovrete integrare i vari passi in un vostro codice – linguaggio a piacere -, che ovviamente, non ha tanto senso qui fornire.
Passaggi
Diamo per scontato che si abbia a disposizione ffmpeg e lame correttamente installati e con supporto mp3. L’idea di fondo è quella di convertire i nostri filmati con le seguenti caratteristiche:
– formato video flv
– dimensione “da web”
– formato audio mp3 con un rate preciso (altrimenti non funziona)
Il comando ffmpeg per fare questo è:
ffmpeg -i input.avi -ar 22050 -ab 32 -f flv -s 320x240 output.flv
320×240 è una misura abbastanza tipica da web, ma siete ovviamente liberi di acconciare diversamente laddove abbiate esigenze differenti. Le altre impostazioni invece, relative all’audio, sono da considerarsi una scelta obbligata.
La considerazione più ovvia, è che è possibile integrare questo comando, in un ambito batch/automatizzato per creare una vera piattaforma di publishing video. Ci arriviamo.
Metadati
Il formato flv supporta delle metainformazioni (durata, framerate, ecc). ffmpeg può integrare queste informazioni come no, a seconda della versione che avete installato. La mia versione (Marillat/debian-multimedia) lo supporta. Diversamente, dovete iniettare questi metadata con l’ausilio di flvtool2.
Il comando classico è il seguente:
flvtool2 -U output.flv
Come ho detto, personalmente non mi serve, ma potreste averne bisogno se usate una versione non recente di ffmpeg (diciamo più vecchia di sei mesi).
Il player
Personalmente, ho trovato ottimo flowplayer, sempre in licenza libera, ma visivamente accattivante, con una pletora di opzioni sia di configurazioni, che di possibilità: è skinnable, supporta playlist, download progressivi, streaming, thumbnails, e un api per lo scripting js – che permette di controllare l’applet via javascript.
Nella sua versione più “semplice”, richiede di essere presente nella directory dove avete codificato il vostro flv, e un frammento di html tipo questo:
<object type="application/x-shockwave-flash" data="FlowPlayer.swf"
Fondere il tutto
Come si diceva, mescolando alla bisogna quanto sopra, è eventualmente possibile creare un piccola o grossa struttura/piattaforma di pubblishing, semplicemente usando uno dei linguaggi di vostro gradimento, e automatizzando questi passaggi, o decidere vari tipi di automatismo, YMMV.
Cosa può andare storto
Fondamentalmente, l’encoding, in particolare quello audio. Sinceratevi della versione di ffmpeg, lame, ecc, e magari, provate ad esplicitare l’opzione -acodec mp3 se ottenete video senza audio.
Un equivalente comando di conversione, si ottiene anche con mencoder, con un comando tipo:
mencoder input.avi -o output.flv -oac mp3lame -lameopts abr:br=56 -srate 22050 \
-of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames \
-ovc lavc -lavcopts vcodec=flv
ma personalmente preferisco ffmpeg.
Risultato
Collegamenti
Nota: il video non va perchè il post è vecchio. Le istruzioni rimangono per lo più, attuali. Va aggiornata la parte di flowplayer.
Allo stato attuale, secondo me, conviene orientarsi verso l’html 5 e abbandonare il player in flash, vedi jplayer o videojs…
Come non essere d’accordo con te, Fabio? La valenza di questo post è solo “storica”. Esso è datato, in prima pubblicazione, “Fri, 08 Jun 2007 02:56:40 +0000”. Lo mantengo anche perchè la parte interessante, quella su ffmpeg è ancora valida. 🙂