Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Flash Media Encoder e streaming video

Vediamo come sfruttare Flash Media Encoder per salvare, in un file FLV, una registrazione e come inviarla in streaming a un server Flash Media Server
Vediamo come sfruttare Flash Media Encoder per salvare, in un file FLV, una registrazione e come inviarla in streaming a un server Flash Media Server
Link copiato negli appunti

Uno degli ambiti in cui il formato SWF si rivela molto efficace è lo streaming video, anche di eventi live (quindi con streaming in tempo reale). Questo soprattutto grazie alla sua grande compatibilità, in quanto tutte altre soluzioni di streaming normalmente adottano il formato AVI, con le relative problematiche su alcuni browser e sistemi operativi.

Adobe ha reso disponibile un nuovo prodotto pensato proprio per lo streaming live: si tratta del Flash Media Encoder, liberamente scaricabile dal sito Adobe.

Questo strumento vede il suo utilizzo in combinazione con Flash Media Server o con i servizi Flash Video Streaming Service, anche se volendo è possibile limitarsi al salvataggio di un file FLV della registrazione.

In questo articolo vedremo come sfruttare questo programma per salvare in un file FLV una registrazione e come inviarla in streaming ad un server Flash Media Server (per provare in locale il proprio streaming è necessaria la Free Developer Edition).

Per quanto riguarda il salvataggio di file FLV, possiamo paragonare il Flash Media Encoder al Flash Video Encoder fornito con Flash Professional (versioni 8 e CS3), con la differenza però che il Flash Video Encoder necessita di un file già presente su disco, mentre il Flash Media Encoder si occupa di codificare video live derivanti, ad esempio, da una telecamera, da una webcam o da una qualsiasi sorgente esterna.

Configurazione della codifica

Sia se decidiamo di eseguire uno streaming o di salvare un file FLV, dobbiamo prima configurare i parametri di input e di output del nostro video. Tali settaggi non si possono impostare separatamente, quindi le opzioni impostate per lo streaming valgono anche per il salvataggio del file.

Questo è un po' limitativo, poiché sarebbe interessante poter inviare uno streaming a qualità medio-bassa (per esigenze di connessione) ma al tempo stesso salvare un video FLV ad alta qualità dello stesso evento: purtroppo le due operazioni non si possono eseguire contemporaneamente.

Interfaccia di Flash Media Encoder

Diamo uno sguardo all'interfaccia di questo programma:

Figura 1. Interfaccia del software
Screenshot interfaccia

Nella parte in alto notiamo le finestre Input e Output, che mostreranno rispettivamente il video in entrata e in uscita, con la possibilità di zoomare per visualizzare il livello di dettaglio. Lo screenshot non ha catturato l'input proveniente dalla webcam, che mostrava la stessa immagine visibile in output poiché l'encoding non era in corso e quindi input e output risultavano sincronizzati perfettamente.

La barra a sinistra della schermata Input indica il livello dell'audio della periferica da cui acquisire il suono.

Nella parte bassa dello schermo abbiamo due tab: Encoding Option ed Encoding Log. Quella che ci interessa maggiormente è la prima, poiché permette di accedere ai settaggi video, audio e di pubblicazione che andremo ora ad approfondire.

Impostazioni video

Analizziamo le impostazioni video, che sono poi la componente principale di questo programma.

Figura 2. Impostazioni di encoding video
Dettaglio impostazioni

Chi ha già utilizzato il Flash Video Encoder noterà che i parametri sono pressapoco gli stessi.

Dalla combo "Preset" possiamo scegliere delle impostazioni di default, basate principalmente sulla banda dell'utente: si va dalla Low Bandwith (150 kbps) alla High Bandwidth (800 kbps), passando per la Medium Bandwith (300 kbps). La scelta più versatile è quest'ultima, ma in caso di video dove sia particolarmente importante la qualità o dove non sia previsto un numero elevato di utenti in visione è possibile spingersi verso la High Bandwidth.

Molto dipende comunque anche dalla velocità del server a cui ci si appoggia, solitamente è sempre consigliato effettuare qualche test per valutare le performance e trovare il miglior compromesso qualità/velocità di riproduzione.

Questi preset influenzano anche le impostazioni dell'audio, seppur in maniera limitata.

Per il lato video abbiamo invece altre impostazioni:

Device: permette di scegliere la periferica da cui catturare il video. L'icona a forma di chiave inglese permette di impostare le proprietà della periferica, che variano a seconda del modello e del tipo di sorgente collegata.

Size: consente di impostare la dimensione del video in input. Al variare di queste dimensioni verranno variatate anche la finestre Input e Output, così potremo vedere subito come renderà il video alle nuove dimensioni. Solitamente la scelta varia in base alle risoluzioni supportate dalla periferica impostata come Device.

FPS (Frames per second): imposta il numero di fotogrammi al secondo da eseguire. Il valore abituale per un video nello standard europeo (PAL) è di 25 fps, conviene comunque basarsi sul numero di fotogrammi al secondo della sorgente. Nel caso in cui vi fossero rallentamenti o troppa banda occupata, potremmo pensare di diminuire leggermente questo valore.

Crop: permette di ritagliare i margini del video. Possiamo impostare separatamente il ritaglio in modo da eliminare eventuali elementi indesiderati. Il video risulterà ridotto rispetto all'input e potremo vedere l'anteprima del risultato "tagliato" nella finestra output.

Resize: permette di avere l'output a una dimensione diversa rispetto all'input. Ridurre la dimensione del video può essere utile per risparmiare banda in caso di necessità, mentre aumentarla non è consigliabile poiché il video degraderebbe in qualità. La casella Mantain Aspect Ratio permette di mantenere le proporzioni anche nell'output.

Bitrate: determina la qualità del video espressa in kilobyte al secondo (kbps). Possiamo anche accedere ad alcune impostazioni avanzate premendo il tasto a forma di chiave inglese.

Figura 3. Impostazioni avanzate per il video
Dettaglio impostazioni avanzate

In questo pannello abbiamo impostazioni come: la frequenza dei fotogrammi chiave, la riduzione del disturbo e soprattutto l'utilizzo della CPU, che ci permette di stabilire quanta memoria dedicare all'encoding del video.

L'opzione Dedicated è da adottare solo su macchine che si occuperanno esclusivamente dell'encoding in quanto tutta la memoria possibile al procedimento di cattura e codificazione del video, il che è molto esoso per la CPU specialmente in caso di video piuttosto lunghi.

Impostazioni audio

Per l'audio la quantità di impostazioni è decisamente minore:

Figura 4. Impostazioni di encoding audio
Dettaglio impostazioni audio

Essenzialmente possiamo scegliere la periferica da cui catturare il sonoro e impostare la qualità tramite Sample Rate e Bitrate. Ultima proprietà impostabile è il volume dell'output.

Solitamente si tende a mantenere la qualità audio piuttosto bassa durante gli streaming, perché questo occupa spesso diversa banda ma anche riducendolo a livelli piuttosto bassi di kbsp risulta comprensibile. Chiaramente nel caso di concerti o altri eventi musicali si tenderà a lasciare alta la qualità audio, sacrificando maggiormente il video.

Possiamo non codificare l'audio (o il video) semplicemente levando la spunta dalla voce corrispondente.

Impostazioni di output

Dopo aver impostato le opzioni per la codifica audio/video del nostro filmato dobbiamo decidere se inviarlo in streaming su Flash Media Server oppure se salvarlo su un file locale.

Figura 5. Impostazioni di output
Dettaglio impostazioni output

L'impostazione di questi parametri è piuttosto semplice, basta inserire l'URL dell'host Flash Media Server nel caso dello streaming, oppure selezionare il nome del file FLV da salvare nel caso di un salvataggio in locale.

Salvataggio su file

Questa è sicuramente l'ipotesi più semplice, paragonabile come detto al Flash Video Encoder: anche in questo caso infatti alla fine del procedimento otterremo un file FLV, utilizzabile con il component FLVPlayback; questo video non sarà trasmesso in streaming, ma tramite download progressivo e dovremo uploadare il file FLV ottenuto su di un server. Non è quindi possibile eseguire dirette con questa impostazione.

Per salvare il video in file FLV, mettiamo semplicemente la spunta alla voce Save to file, impostiamo il percorso e il nome dell'FLV da creare e premiamo il tasto Start posto in fondo all'interfaccia. Apparirà la finestra Encoding Log dove potremo visualizzare eventuali errori e lo stato dell'encoding video (compresi eventuali fotogrammi scartati) ed audio, inoltre sarà visibile la frequenza di fotogrammi al secondo del video in output.

Figura 6. Log e dettagli encoding
Dettaglio encoding log

Notiamo in basso a sinistra il dischetto con la scritta "Encoding the file", che indica il salvataggio su un file locale.

Streaming con Flash Media Server

Ipotesi decisamente più interessante è lo streaming in diretta usando Flash Media Server. Questa soluzione è leggermente più complicata da realizzare e per essere utilizzata sul web richiede un hosting con supporto per Flash Media Server: purtroppo ve ne sono pochi in italiano, mentre in inglese è possibile trovarne qualcuno in più (accertiamoci però che la versione utilizzata sia la 2.0.4 in quanto la precedenti non supportano lo streaming da Flash Media Encoder).

Nota: in questa spiegazione vengono dati per conosciuti i concetti di base di Flash Media Server (installazione e creazione di una nuova applicazione).

Creazione dell'applicazione

Creiamo una nuova applicazione all'interno di Flash Media Server, chiamandola per esempio Stream. Per fare ciò dobbiamo creare una nuova cartella dentro alla cartella applications di Flash Media Server (di default viene installato in C:/Programmi/Macromedia/Flash Media Server 2).

In questa cartella è necessario copiare il file main.asc, reso disponibile con questo articolo. Questo file si occupa di rilevare la connessione, valutare la banda a disposizione dell'utente e inviare il video che mostreremo tramite un component FLVPlayback.

Impostazione dei dati del server

Per pubblicare in streaming, selezioniamo la casella Stream to Flash Media Server, quindi impostiamo i dati relativi all'host su cui è disponibile Flash Media Server: nel caso di un'installazione locale ad esempio l'indirizzo sarà del tipo rtmp://localhost/Stream/Istanza

È necessario quindi impostare un nome per il nostro streaming, nome che utilizzeremo nel component FLVPlayback per mostrare la diretta. Chiamiamolo ad esempio streamingvideo.

Creare il player

Se Flash Media Encoder si occupa in automatico di codificare il filmato e inviarlo al server, sarà nostra premura creare un file SWF da cui sia possibile visionare la diretta. Come abbiamo detto anche in questo caso useremo un component FLVPlayback. Posizioniamo allora un'istanza di questo component sullo stage e impostiamo la proprietà contentPath sul nostro streaming (es. rtmp://localhost/Stream/Istanza/streamingvideo) e il parametro isLive su true.

Leviamo la spunta alla voce Download FLV for Cue Points and Dimensions.

Testiamo il filmato:

Figura 7. Player FLVPlayback con video in streaming
Screenshot del player

Nella finestra dell'Encoding Log in questo caso la dicitura sarà Streaming to Primary e indica che lo streaming è in corso correttamente.

Conclusioni

Abbiamo visto come con Flash Media Encoder sia possibile realizzare dirette in tempo reale, sia di eventi live che eventualmente registrati, sfruttando sorgenti quali telecamere, webcam, tv e molto altro. La grande quantità di impostazioni per la codifica del video e dell'audio rende Flash Media Encoder una soluzione sicuramente interessante per la realizzazione di streaming, inoltre questo software è rilasciato in forma totalmente gratuita.

Sfortunatamente è piuttosto difficile trovare servizi di hosting che supportino Flash Media Server, in particolare la versione 2.0.4 essendo l'ultima uscita non è al momento molto diffusa. Va anche considerato che generalmente, specie nel panorama italiano, lo streaming video è ancora piuttosto poco diffuso.

Ti consigliamo anche