Censorship banner.png

Guri:Streaming

From Wiki - Hipatia
Jump to: navigation, search
The help pages are provided by Hipatia volunteers to help wiki contributors.
Help index: Mediawiki Server configuration LaTeX Streaming Templates

Search for help:


Guri

Guri logo.png

Educazione e conoscenza libera

Risorse

Sito Ufficiale
Notizie ed eventi
Galleria Fotografica
Video
Mailing List
IRC
Ufficio

Attività correnti

Itis 2012
La Bottega dei Saperi
Cluster
Attività - Eventi passati

Offrici una birra
Contatti

Mailing List
IRC
Contattaci

Partecipanti attivi
Argon

Palby

Lio

Jucar

GlaxY
Stato: Attivo
Copyleft.svg Copyleft
All wrongs reversed

Molto spesso, quando si vuole comunicare in rete, si sceglie di farlo tramite contenuti multimediali come audio e video. Ogni volta che organizziamo un evento, come una conferenza, poniamo particolare attenzione nella diffusione tramite internet dei contenuti, per raggiungere il maggiore pubblico possibile. Quando la connessione a internet e la tecnologia a nostra disposizione lo permette (ossia computer e telecamere), cerchiamo sempre di trasmettere i contenuti degli eventi importanti in diretta internet, tramite il cosiddetto streaming. Al termine dell'evento i contenuti vengono poi editati per aggiungere maggiori informazioni e riferimenti, migliorando la qualità del materiale e dell'informazione che viene diffusa tramite di esso, e messi a disposizione sul nostro portale di streaming.

In questa pagina descriviamo come trasmettere video in diretta tramite internet, descrivendo diverse situazioni quali ad esempio la ripresa diretta del video tramite telecamere digitali, oppure la replica di un video già presente su internet.

Il concetto di streaming è molto avanzato e in genere legato a programmi e formati sperimentali e non ancora standardizzati, per cui per avere risultati professionali occorre avere molte competenze tecniche. Tuttavia è possibile ottenere dei risultati soddisfacenti anche con conoscenze minime. Lo scopo di questa pagina è proprio quello di raccogliere parte di queste conoscenze, per poter garantire l'accesso a queste tecnologie anche alle persone non tecniche.

Nota etica

Anche nel caso dello streaming, l'utilizzo di tecnologie e software liberi è fondamentale per garantire la libertà nostra e di tutte le persone con cui condividiamo conoscenza. Per questo motivo poniamo particolare attenzione alla scelta dei programmi utilizzati e dei formati con cui rendiamo i nostri contenuti disponibili agli altri. Non consigliamo un formato o un programma in particolare, l'importante è che esso garantisca le 4 libertà fondamentali che permettono il controllo, la comprensione, la modifica e la condivisione dei materiali a nostra disposizione.

Garantire a ogni persona il potere di controllare queste tecnologie è fondamentale, si pensi ad esempio alla propria privacy e all'anonimato in rete. Se avessimo scelto formati proprietari come Adobe Flash ad esempio, ogni computer che accede a un nostro video sarebbe stato facilmente tracciabile e controllabile, tramite i LSO (local shared objects), che rendono vani tutti gli sforzi di privacy e anonimato.

L'utilizzo dunque di formati liberi e tecnologie libere risulta fondamentale dal punto di vista pratico, per garantire anche agli utenti inconsapevoli alcune delle libertà più importanti.

Materiale necessario

Tutti i software consigliati in questa pagina sono presenti nei repository delle principali distribuzioni libere.

Elenco dei software necessari, il loro utilizzo verrà spiegato man mano che verranno richiamati all'interno del documento. Riferirsi sempre alla documentazione ufficiale dei programmi, in quanto non si garantisce che questa pagina venga aggiornata e rifletta man mano gli aggiornamenti ai programmi menzionati.

  • ffmpeg/mplayer
  • oggfwd
  • icecast
  • dvgrab (per streaming da telecamere dv)
  • una distribuzione libera correttamente configurata

per recuperare lo stream flash da ustream.tv

  • browser
  • AdBlock Plus
  • Gnash o equivalente (es swf-dec)
  • Ghex

se si vuole rendere accessibile lo streaming anche a computer esterni alla propria rete, è inoltre necessario un server con ip pubblico su cui installare Icecast.

La notte della rete

L'evento "La notte della rete" è stato trasmesso in diretta da molti siti web e blog, per consentire a un pubblico più vasto di poter seguire i numerosi interventi a favore della libertà in rete.

La diretta streaming ufficiale dell'evento è stata organizzata e fornita dalla squadra de "Il Fatto Quotidiano", testata giornalistica particolarmente importante nel mondo dell'informazione italiana, in quanto libera da bavagli imposti da finanziatori di qualunque genere (dai partiti alle case editrici). Purtroppo chi si è occupato della diretta ufficiale ha deciso di farlo tramite tecnologie che calpestano alcune libertà che ci si prestava a difendere, come l'utilizzo del formato flv (Flash). Abbiamo dunque deciso di mettere a disposizione di tutti, sul sito di Guri, lo streaming in un formato libero, ossia Theora Ogv.

Ecco i problemi che abbiamo dovuto risolvere per poter realizzare il tutto, sperando che siano di aiuto a qualcuno nel caso l'inconveniente si ripeta in futuro.

Per realizzare lo streaming abbiamo dovuto:

  1. recuperare il flusso video originale (quello trasmesso da Il Fatto Quotidiano)
  2. salvare il flusso (in flv) da qualche parte sul disco
  3. convertire il file da flv in ogv (Theora)
  4. inviare il nostro nuovo flusso ogv al nostro server di streaming
  5. pubblicare il video sul sito

Il passo più difficile è stato il primo, ossia riuscire a recuperare il flusso video in flash, partendo dalla diretta originale. Il Fatto quotidiano si appoggia per lo streaming al sito "ustream.tv". Per accedere a un video su Ustream.tv, il nostro browser deve fare un bel po' di cose... Prima di tutto si accede alla pagina contente il video desiderato (nel nostro caso la diretta), dopodichè il nostro browser scarica in automatico un'applicazione che ci permetterà di vedere il video, ossia un player (riproduttore). Questa applicazione è un programma in Flash, non libera. Una volta che il nostro browser ha scaricato ed eseguito questa applicazione, si stabilisce una sessione tra noi e il server di Ustream, che invierà al famoso player il flusso audio/video che ci interessa vedere.

Il tutto avviene normalmente senza che un utente esperto se ne possa accorgere, e questo in generale è una tecnica utilizzata da molti siti (tra cui Youtube) per costringere gli utenti a dover accedere ai video esclusivamente attraverso il sito che li ospita (nel nostro caso ustream.tv) e dunque costringendo gli utenti a usare il loro player, che per funzionare richiedere l'utilizzo delle librerie proprietarie di Adobe Flash.

Questo ovviamente comporta molti problemi, primi tra tutti quelli già citati di privacy e anonimato. In secondo luogo, se un utente possiede un computer con un architettura non supportata da Adobe Flash, allora l'utente non potrà accedere ai contenuti video, in quanto non avrà a disposizione il software necessario per riprodurli. Questi inconvenienti ovviamente non si presentano utilizzando software libero :)

Sembra dunque che quelli di ustream non vogliano che noi abbiamo un link diretto al video originale, e questo ci impedirebbe dunque di poter convertire il video e continuare con i nostri compiti... Ma ovviamente esiste un modo per fregarli :)

Per prima cosa bisogna aprire la pagina che ci interessa con un browser libero, nel nostro caso Firefox (o Iceweasel o Icecat). Grazie a Gnash sarà possibile eseguire il player del sito Ustream e accedere al video. Una volta che il video è partito, tramite l'estensione AdBlock Plus possiamo metterci a indagare cosa sta succedendo tra il nostro browser e il sito di ustream.

Apriamo la lista degli elementi bloccabili e cerchiamo la stringa amf. Dovremmo trovare una cosa del genere:

http://cdngw.ustream.tv/Viewer/getStream/1/5753450.amf?locale=en%5FUS&encoded=1

a questo punto salviamo il nostro oggetto. Esso è un file esadecimale. Tramite un programma come ghex, ossia un programma in grado di convertire stringhe esadecimali in altri formati (es ascii, ottale, ecc) apriamo il nostro file amf.

A questo punto dobbiamo trovare i seguenti dati:

rtmp://ustream.fc.llnwd.net/ustream/test

questa è l'url del server che ospita i contenuti (direttamente)

ustream/test

applicazione che si connette al server

ustream@llnw_live_1_62623853

è il percorso di riproduzione in cui si trova effettivamente il file che vogliamo vedere (la diretta)

http://cdn1.ustream.tv/swf/4/viewer.344.swf

indirizzo del player usato dal sito

Questi sono tutti i dati che riguardano la sessione tra il nostro browser e il contenuto multimediale sui server di ustream. Grazie a questi saremo in grado di accedere direttamente al video della diretta per ricodificarlo in locale.

A questo punto, grazie al programma libero rtmpdump, possiamo finalmente scaricare il video in flash per convertirlo in un formato libero! Grazie al comando <syntaxhighlight lang="bash" enclose="div">rtmpdump -r "rtmp://ustream.fc.llnwd.net/ustream/test" -a "ustream/test" -y "ustream@llnw_live_1_62623853" -W "http://cdn1.ustream.tv/swf/4/viewer.344.swf" -o notte_rete.flv --live</syntaxhighlight> possiamo salvare creare un file flash in locale per poi ricodificarlo. L'opzione -o serve a specificare il nome del file che si vuole avere sul computer (usare -o - per mandare l'output a /dev/stdout) e l'opzione --live serve a dire al programma che il flusso a cui stiamo accedendo è una diretta.

Se rtmpdump comincia a scaricare allora il più difficile è fatto. A questo punto convertiamo il file flv in un formato libero e inviamo il tutto al nostro server di streaming.

Nota: il server di streaming è stato configurato attraverso il software libero Icecast. Per una guida su come configurare Icecast, si consulti la documentazione ufficiale.

Per convertire il video in ogv si usano in combinazione il programma ffmpeg e oggfwd. Il comando: <syntaxhighlight lang="bash" enclose="div">ffmpeg2theora -v 5 -f flv -x 640 -y 480 -o /dev/stdout notte_rete.flv | oggfwd indirizzo_server porta password_server_icecast la_notte_della_rete.ogv</syntaxhighlight> converte il nostro video notte_rete.flv in un video in Theora ogv, con rapporto 640x480 e lo invia a oggfwd, che si occuperà di inviare il nostro flusso ogv al server Icecast, con il nome la_notte_della_rete.ogv.

Nota: il programma ffmpeg2theora non fornisce una buona qualità audio/video, tuttavia per i nostri scopi è stato più che sufficiente. Per ottenere una qualità migliore, si consiglia di utilizzare più pipe di ffmpeg, separando la traccia video da quella audio, per poi ricongiungerle in file ogv unico. Un esempio potrebbe essere:

<syntaxhighlight lang="bash" enclose="div">ffmpeg -i notte_rete.flv -f flv -r 25 -deinterlace -b 500000 -s 640x480 -vcodec rawvideo -f rawvideo -pix_fmt yuv420p - | ffmpeg -f rawvideo -s 640x480 -r 25 -i - -f yuv4mpegpipe - | ffmpeg -i - -f rawvideo -r 25 -b 500000 -s 640x480 -vcodec libtheora -f ogg notte_rete.ogv</syntaxhighlight>

Fatto questo non resta che diffondere il video. Per non forzare gli spettatori a utilizzare un determinato programma per la riproduzione del video, si può passare il link diretto al video. Altrimenti si può incorporare il video in una pagina web e diffonderne poi il link.

Riguardo all'ultimo passaggio, non esiste ancora un metodo "standard". Se si sceglie di ricorrere all'html5, bisogna tenere presente che non tutti i browser sono in grado di interpretare questi tag, per cui è consigliabile fornire anche un player (libero) in modo da poter visionare il video in ogv anche se non si ha un browser moderno. Per fare ciò noi utilizziamo il programma iTheora.

Banda e processore permettendo, dovremmo ottenere un video in un formato libero, accessibile da molte più persone e nel pieno rispetto della loro libertà. Lo streaming ovviamente dovrebbe essere in differita di qualche minuto rispetto alla diretta originale, ma niente vale più della libertà, quindi una piccola differita ce la possiamo sicuramente permettere :)

Un ultimo step importante è la licenza del video, anch'essa libera!