Consulenza Open Source: siti internet e applicazioni web blogs

mercoledì 25 giugno 2008

streaming audio-video in formato mp4 con Linux.

Su LinuxJournal è apparso un interessante articolo su come realizzare dello streaming audio-video in formato mp4 con Linux. Eccovi una traduzione moooolto libera:

Innanzitutto definiamo cos'è il video streaming: tradizionalmente dobbiamo scaricare tutto il video prima di poterlo visualizzare sul nostro PC.
Con lo streaming, invece, i dati del video inviato verso il client sono decodificati e visualizzati direttamente, appena ricevuti.
Le implementazioni come la video conferenze, i sistemi di sorvegliana ed il video-on-demand (VOD) si basano tutte su questa tecnologia.
Appena la gente parla di streaming video, la prima parola che viene in mente è "costoso": anche se voi state semplicemente convertendo contenuti multimediali già esistenti, il software normalmente disponibile per effettuare tale operazione è al di fuori della portata dei normali utenti.
Ecc quindi che si capisce subito uno dei motivi principali per usare Linux per il video streaming: è economico!.
Inoltre sono presenti diversi strumenti per l'encoding e lo streaming e sono relativamente facili da usare.
In meno di un'ora di lavoro possiamo tranquillamente avere il nostro server streming funzionante ed una dozzina di filmati in MPEG4 disponibili per i nostri utenti.
MPEG4 permette, a differenza di altri codec, di effettuare l'encoding a differenti bitrates e risoluzioni.
Dando per scontato che sappiate cos'è la risoluzion, ecco due parole per il termine bitrate: si tratta dell'ampiezza di banda necessaria per il flusso di dati in streaming del filmato.
Inoltre, il formato MPEG4 è molto diffuso e sta acquistando sempre più popolarità, inoltre si tratta di un formato Open, cos amolto importante per le implementazioni future di questo formato.
Setup
Se il vostro obbiettivo è solo quello di fare streaming di filmati MP4 preregistrati, basta solo configurare uno streaming server.
In caso di applicazioni di videoconferenze o sorveglianza sono necessari anche un dispositivo di cattura video compatibile ed un encoder MP4 in real-time.
Ovviamente già esistmo schede per PC in grado di effettuare l'encoding video in MP4 in real-time, ma snon ancora troppo costose per l'utente domestico.
Sotto Linux MPEG4IP suite, FFmpeg multimedia system e lo Streaming Server di Apple forniscono una soluzione economica e funzionante per creare clip MP4 e gestirne lo streaming.
Compilare ed installare MPEG4IP
Il progetto MPEG4IP è iniziato nell'estate del 2000, per mano di David Mackie, che lavora nell'ambito dello streaming multimediale per i sistemi Cisco.
Il progetto è licenziato sotto la Mozilla Public License 1.1, ma i codec dell'MP4 sono soggetti a termini di licenza differenti, che vi esorto a leggervi nel file COPYING allegato all'applicazione stessa.
Nell'applicazione MPEG4IP sono presenti diversi tool per la creazione e la gestione di filmati MPEG4. Attualmente la versione più stabile è la 0.9.7 ed è disponibile per il download all'url mpeg4ip.sourceforge.net/.
Avrete bisogno anche del LAME package se compilerete anche mp4live (abilitato di default), si tratta di un MPEG-4 encoder per il live broadcasting.

tar zxvf mpeg4ip-0.9.7.tar.gz
./bootstrap
make
make install

Per compliare anche il player grafico avrete bisogno anche delle librerie GTK+.
Compilare ed installare FFmpeg
Il sistema FFmpeg è una soluzione completa per la creazione e lo streaming MPEG-4.
La versione più stabile attualmente è la 0.4.6.
Attualmente lo streaming server supporta solo il protocollo HTTP.

tar zxvf ffmpeg-0.4.6.tar.gz
./configure
make
make install

Questa configurazione è sufficiente per l'encoding di MP4.
Per aggiungere il supporto anche per MP3 ed Ogg Vorbis bisogna inserire add --enable-mp3lame ed --enable-vorbis con le relative librerie.
Estrarre il contenuto multimediale dalla sorgente
Spesso dovrete convertire diversi fomrati in MP4, tipicamente (MPEG-1 e 2, DivX e XviD o addirittura DV AVI).
Al momento non esiste alcun software a singolo click che faccia tutto il lavoro per voi: è necessario effettuare l'encoding dell'audio e del video separatamente, qundi dobbiamo splittarli dalla sorgente originale.
Sotto Linux, possiamo dire che FFmpeg è il coltellino svizzero del video processing: codifica e decodifica diversi formati e supporta alcune funzionalità base di editing video.
Per estrarre l'audio:

ffmpeg -i -vn

Questo comando funziona con i file DV/DivX/XviD AVI ed anche con gli MPEG.
Il risultato sarà un file audio PCM.
Codificare l'audio
Per generara un clip MPEG-4 complaint è necessario un audio MPEG-4 AAC. La suite MPEG4IP include un AAC encoder chiamato FAAC.
Per codificare la traccia audio PCM estratta da FFmpeg:
faac -m4 -b64 -r48000 -pLC
Il flag -m specifica la versione di AAC MPEG. Stiamo creando un MPEG-4 AAC, quindi usiamo -m4.
La -b indica il bitrate (32/64 di solito sono abbastanza).
La -r indica il sampling rate del file di input.
La -p è un pochino più complicata: LC sta per low complexity e riduce il carico di lavoro in fase di decompressione sul client.
Un altro profilo à LTP long term prediction milgiora sensibilmente la qualità ma introduce una decompressione più pesante
Codificare il video
MPEG4IP ha al suo interno due codificatori: mp4encode ed xvidenc.
Mp4encode codifica un file AVI in un file con formato MP4 con il suo encoder integrato OpenDivX od un altro ISO MPEG-4 encoder.
Xvidenc, invece, codifica raw video file con l'encoder XviD. Se voi codificate con questi programmi il file AVI di origine deve avere una traccia video in formato YUV12, e la traccia audio deve essere in PCM.
Adesso vedremo come utilizzare FFmpeg per semplificare il processo di codifica.
VIsto che FFmpeg decodifica DV, MPEG-1, DivX e XviD, possiamo saltare il passo di preparare un file in formato YV12 per mp4encode o xvidenc.
Il comando per codificare da questi formati in MPEG4 è:

ffmpeg -i -an -b 300 -vcodec mpeg4
FFmpeg adesso codificherà il file video di input, senza audio (-an) a 300 Kilobit/second utilizzando l'SO MPEG-4 encoder in una singola traccia MPEG4.
Unire l'audio ed il video
Adesso dobbiamo compilare il file audio e quello video per creare un clip MP4 completo.
La suite MPEG4IP ha un tool chiamato mp4creator per questo. Iniziamo a creare il clpi MP4:

mp4creator -c myvideo.avi -hint mytest.mp4

Il tag -hint avverte mp4creator di aggiungere una traccia addizionale hint per la traccia video. La traccia hint è necessaria per effettuare lo streaming con Darwin Streaming Server di Apple.
Per aggiungere la tracica audio:

mp4creator -c myaudio.aac -hint -interleave mytest.mp4

Infine ottimizzate il clip:

mp4creator -optimize mytest.mp4

Per vedere la lista delle tracks in un file MP4 digitate:

mp4creator -list mytest.mp4

Se avete un file MP4 valido, il risultato dovrebbe essere qualcosa del genere:

Track Type Info
1 video MPEG-4 Simple @ L3, 30.030 secs, 299 kbps, 352x240 @ 29.97 fps
2 hint Payload MP4V-ES for track 1
5 audio MPEG-4, 29.973 secs, 65 kbps, 48000 Hz
6 hint Payload mpeg4-generic for track 5
7 od Object Descriptors
8 scene BIFS

Prima di mettere il clip sullo streaming server, è necessario testarlo: dentro MPEG4IP abbiamo un player per vedere i clip MP4 salvati localmente.
Setup di Darwin Sreaming Server
Dalla versione 4.0 Darwin Streaming Server è compatibile non solo più con i file QuickTime ma anche con quelli MP4.
Questo prodotto è gratuito per l'uso non commerciale e gira facilmente sotto Linux.
Per ottenerne una copia basta andare sulla homepage del progetto Darwin.
E' necessario avere una APSL (Apple Public Source License) valida.
Effettuate il download del server e del proxy se dovete servire client dietro un client.Ecco i comandi per installarli:

tar zxvf DarwinStreamingSrvr4.1.2-Linux.tar.gz
cd DarwinStreamingSrvr4.1.2-Linux
./Install

E' necessario avere Perl installato per l'interfaccia di amministrazione web-based.
Al termine dell'installazione, lanciate l'interfaccia di amministrazione con lo script streamingadminserver.pl.
Puntate il vosto browser verso le porte 1220 o 1240 se usate SSL, loggatevi e seguite le istruzioni. Una volta completati questi passi avrete un sistema Darwin Streaming Server funzionante.

Effettuare lo streaming dei clip

Per effettuare lo streaming in HTTP basta semplicemente mettere i clip in una cartella del web server accessibile dall'esterno e puntare il browsere su quell'URL.

Ovviamente la mia traduzione è molto libera, quindi vi consiglio, se ci sono passaggi oscuri o per maggiori informazioni di recarvi sull'articolo originale, che potete trovare su LinuxJournal a questo URL: http://www.linuxjournal.com/article.php?sid=6720

Giuseppe Stampone


Blogged with the Flock Browser

martedì 3 giugno 2008

google earth is not funny anymore

martedì 20 maggio 2008

Helpdesk medievale

Medieval helpdesk, Italian subtitles

venerdì 16 maggio 2008

Flock tutorial: guida sul perchè passare a flock!!!

Una piccola guida , senza pretese, sul perchè passare a flock anzichè usare firefox o peggio internet explorer.

non è professionale, e l'ho fatta per passare il tempo, ma potrebbe essere interessante :)