Sei in Home page » Documentazione |
Streaming HowtoAbstract: Breve guida allo streaming audio video. Questa guida è stata usata per realizzare lo streaming durante il LinuxDay 2004. Questo documento è work in progress e in alcune cose sono andato a memoria. Fatemi sapere se trovate problemi. IntroduzionePer lo streaming è stata usata la piattaforma ffmpeg/ffserver Perche?
N.B. Lo streaming fatto con VideoLan funziona solo se il client e' VideoLan e ha un numero limitattissimissimissimo di schede di acquisizione supportate. Le prove sono state fatte su piattaforma RedHat9, Fedora Core 1, Mandrake 10.0, Slackware 10 e alla fine si e' deciso di usare la Slackware 10 perchè, per esempio, sulla macchina di prova (Pentium II 800), in una situazione in cui la macchina faceva da encoder, server di streaming e un client in ascolto, su Mandrake il carico della macchina era di 1.00 mentre su Slackware, nelle stesse condizioni, e' risultato di 0.60. Implementazione del sistema.L'idea era quella di distribuire il carico su due macchine, una (Pentium II 800), con scheda di acquisizione e ffmpeg che fornisse il flusso video, l'altra, un Pentium IV 2600, con sopra ffserver, che raccogliesse il flusso video per ridistribuirlo ai vari client che ne avessero fatto richiesta. Purtroppo, in tutte le prove fatte, tranne in un caso, con due macchine Mandrake, l'ffserver andava in segfault alla prima connessione di un client, per cui, alla fine si è deciso di mettere tutto sul Pentium IV e di far girare ffmpeg e ffserver sulla stessa macchina, che comunque, da prove effettuate, rimane sempre sotto un load di 0.4. ConfigurazionePer prima cosa è stato necessario far funzionare la scheda di acquisizione video che, nel nostro caso, è stata una Hauppauge WinTV con chipset BT878. In tutti i casi, il modulo bttv.o dei vari kernel >2.4.24 e 2.6.9 hanno riconosciuto correttamente la scheda in questione attivando l'interfaccia /dev/video0. In Mandrake e' stato necessario mettere il modprobe bttv nel modules.conf a mano. In Slackware il demone hotplug ha invece rilevato correttamente e automaticamente la scheda. E' stato pero', in questo caso, necessario mettere nella blacklist di hotplug il modulo audio della bttv che altrimenti andava in conflitto con la scheda di rete realmente presente nel server. Per impostare poi la scheda WinTV (selezionare l'ingresso corretto, vedere cosa si vedeva, etc.) si è scaricato e installato XawTV e con questo si seleziona la sorgente da cui far leggere il flusso video, una volta impostata, si puo' anche chiudere il programma. E' possibile tenere aperto XawTV contemporaneamente all'acquisizione di ffmpeg, non vanno in conflitto e nessuno dei due fa il lock de device, ah, potenza di Linux :-) XawTV e' stato compilato e installato con questa righe: # ./configure ????
Prima di scaricare ffmpeg, una nota. Alcune distribuzione, tipo la Mandrake, possiedono già un pacchetto per l'ffmpeg. Non fidatevi, ma scaricate e ricompilate. Per esempio, il pacchetto standard di Mandrake non ha attivato il supporto per l'audio mp3 e quindi solo mp2 con conseguente incompatibilità con alcuni client. Prima di scaricare ffmpeg, per avere il supporto audio MP3, scarichiamo e installiamo le librerie mp3lame. # wget ttp://puzzle.dl.sourceforge.net/sourceforge/lame/lame-3.96.1.tar.gz
Ora possiamo scaricare e installare ffmpeg con il supporto mp3. Ho provato, a causa del sigfault di cui accennavo sopra, quasi tutte le release, comprese le CVS, ma la più stabile è risultata la 0.4.8, per cui consiglio ed ho utilizzato quella # wget http://puzzle.dl.sourceforge.net/sourceforge/ffmpeg/ffmpeg-0.4.8.tar.gz
Ok, ora bisogna creare il file di configurazione in /etc/ffserver.conf. Questo è quello da noi utilizzato [commentare le varie opzioni][questo non è quello definitivo][mettere i commenti in modo più "carino"]
Port 80 Ok. Abbiamo finito. Possiamo far partire il server # ffserver & e iniziare lo streaming # ffmpeg -vd /dev/video0 http://localhost/ld2004.ffm |
|
Copyright© 1997-2006 Emiliano Bruni | Online dal 16/08/1998 con visitatori | Scrivimi all'indirizzo: |