vermario.com

Drupalvideo + lighttpd flv streaming in ubuntu

Fare youtube qualche anno fa vi avrebbe reso milionari, ora forse vi frutta una caramella due stecche di cannella, comunque, vale la pena provarci!

Da un po' uso il simpatico modulo di Tradis Tidwell per Drupal chiamato Flashvideo, che consente di fare l'upload di video di quasi ogni formato (insomma, tutti i formati che ffmpeg capisce), convertirli automaticamente in flv e usarli come contenuto in drupal (quindi tramite views, integrarli con cck, eccetera).

Quello che manca in questo idillio è lo streaming dei file, che sono gestiti in download progressivo. Ora, non è che ci sia poi così tanto di sbagliato nel download progressivo, tanti siti lo fanno e sono felici. Però, effettivamente, se hai a che fare con video lunghi, può essere utile poter andare alla fine del file senza aspettare. Poi, c'è sempre un committente che te lo chiede per una sua ossessione, e poi da un po' lo fanno google video e youtube, per cui anche noi che li imitiamo.

Ci sono diverse soluzioni per effettuare lo streaming di file flv:

  • flash media server - (nisba, è a pagamento)
  • Red5 (opensource ma complicato, come la fusion per Eelst) :) ne parliamo più avanti
  • Lighttpd (leggero, gratis, funziona!)

Vediamo come fare con lighttpd, che, per chi non lo sapesse, è un webserver leggero ma avanzato, che può sostituire apache. In più, cosa che a noi fa tanto comodo, ha un bel modulo per lo streaming di file FLV incluso nella distribuzione.

Dato che lighttpd può far girare (come cgi) php5, lo useremo, insieme a mysql per far girare drupal, e per servire i file FLV in streaming.

Quindi, per prima cosa, dobbiamo installare lighttpd, mysql5 , php5, seguendo questa preziosa guida. Quando abbiamo installato il tutto e tutto funziona, possiamo installare drupal come al solito.

Quindi, scaricate il modulo e seguite quest'altro tutorial per impostarlo correttamente. (Già un sacco di tutorial da seguire. Ma qui stiamo mirando ai dollaroni! E non avrebbe moltro senso riscrivere tutto qui.

Ok, quindi una volta che avete settato tutto, cominciamo con "le cose nuove".

Per prima cosa, attiviamo il modulo di streaming di lighttpd. Nel file:

/etc/lighttpd/lighttpd.conf

bisogna decommentare la riga che riguarda il modulo di streaming:

server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
# "mod_rewrite",
# "mod_redirect",
# "mod_status",
# "mod_evhost",
# "mod_usertrack",
# "mod_rrdtool",
# "mod_webdav",
# "mod_expire",
"mod_flv_streaming", //questa qua
# "mod_evasive"
)

e aggiungere la riga:

flv-streaming.extensions = ( ".flv" )

Ok, facciamo ripartire lighttpd:

sudo /etc/init.d/lighttpd restart

Ok, ora il server è pronto a gestire tramite streaming i file di tipo FLV.

Perchè funzioni lo streaming, però, i file FLV devono contenere dei metadati, ed ffmpeg, che il modulo flashvideo usa per fare le conversioni, non li inserisce da solo. Abbiamo quindi bisogno di un programma che lo faccia per noi. Useremo un programma opensource chiamato Yamdi (Yet Another Medatada injector), che si scarica da qui. Installiamolo e lo mettiamo in /usr/bin.

Ora, dobbiamo settare alcune opzioni nel modulo flashvideo. (ma non toccheremo il codice, che è una gran cosa).

Per prima cosa, dobbiamo avvertire il player flash che deve funzionare in modalità streaming: nelle opzioni del moduo, sezione Flash player, settare come segue:

Più in basso, nella sezione Ffmpeg Settings, scrivere nella casella "ffmpeg command":

-i @input -v -1 -f flv -acodec mp3 -ar 22050 -b 400k -s 400x300 -ab 96k -ac 1 @output && /usr/bin/yamdi -i @output -o /tmp/yamdi.flv && /bin/mv /tmp/yamdi.flv @output

Questo comando esegue la conversione, poi passa il file attraverso yamdi, e lo mette al posto giusto.

Ok! Fatto! Ora i file video vengono serviti da lighttpd in modalità streaming, e siete un passo più vicino ai dollaroni! :)

Trackback URL for this post:

http://www.vermario.com/home/trackback/509
0 commenti

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote>
  • Linee e paragrafi vanno a capo automaticamente.
  • Insert Google Map macro.

Maggiori informazioni sulle opzioni di formattazione.