Go Back   Forum > Streaming > Forum Generale Streaming

LOGIN

Register FAQ Live Now! Rules Live TV Arcade Search Today's Posts Mark Forums Read






× Notice: This forum is read-only.The content of the community may not be verified or updated. More info
Reply
 
Thread Tools Search this Thread Display Modes Translate
  #11  
Old 11-17-2011, 01:50 PM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Sono tornato!

Sono sempre alle prese con questa storia ma ho fatto qualche passo avanti!

Dunque, ho deciso di usare Adobe Flash Media Live Encoder per acquisire il video e l'audio (mi serve in stereo), un servizio Hosting FMS, una mio player scritto in AS3 per visualizzare il video.

Sono alla ricerca di un servizio Hosting FMS...ma non ho nessuna idea di cosa cercare in particolare, quali caratteristiche verificare ecc...l'unica cosa che mi ha guidato fino ad ora era il prezzo

Free non ne ho trovati. Quello che più mi convinceva era questo (quello da 9€) ma, come dicevo, non ho idea!

Se avete qualche consiglio, ve ne sarò eternamente grato!


Reply With Quote
  #12  
Old 11-21-2011, 09:35 AM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Avrei anche qualche domanda di livestream: questo servizio (la versione free), mi permette di usare programmi di acquisizione tipo Adobe Flash MEdia Live Encoder e di utilizzare un mio player per la visualizzazione?

Perchè io ho la necessità di:

1) Acquisire audio in stereo (ecco perchè Adobe)

2) Gestire l'audio in stereo nel player in modo particolare (ecco perchè il mio player)

Help!


Reply With Quote
  #13  
Old 11-21-2011, 11:03 AM
ABNormal ABNormal is offline
Administrator
 
ABNormal's Avatar
 

Join Date: May 2005
Posts: 3,978
ABNormal is on a distinguished road
Send a message via ICQ to ABNormal Send a message via MSN to ABNormal Send a message via Yahoo to ABNormal
Default

Quote:
Originally Posted by jobv
La cam la collegherei con cavo HDMI, ma certo non pretendo di inviare un full-hd in rete

Quindi la qualità, dal punto di vista della camera, non credo sia un problema...o no? Dimentico qualcosa?


la qualità della camera ovviamente serve, ma non puoi dimenticare che per fare arrivare un segnale fullHD devi pensare che hai da trasmettere i dati di 1080*1920 pixels almeno 20 volte in un secondo. parliamo di una mole di dati che deve prevedere una banda internet di trasmissione altrettando grande (parliamo di 44 milioni di dati/pixel al secondo, non compressi).
pretendere di inviare il massimo della qualità potrebbe comportare anche un fotogramma trasmesso ogni tot secondi, quindi ti conviene studiare la connessione, e in base a quella dare più o meno audio di qualità rispetto al video.

che io abbia potuto verificare raramente, almeno qui nel bistrattato sud, si supera (spesso neanche si raggiunge) un livello di 600kbs. levane 96 per un audio decentino, ti restano teorici 500 (di picco) per il segnale video. fa tu cosa puoi trasmettere in quanto a qualità con un codec a 400kbs...
__________________
«Fino a quando il colore della pelle sarà più importante del colore degli occhi ci sarà sempre la guerra.» Bob Marley


Reply With Quote
  #14  
Old 11-21-2011, 11:04 AM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Per qunto riguarda il punto uno ci sono riuscito, ho trovato una guida qui

Ma non ho idea se il punto due sia risolvibile...non ho capito se la possibilità di usare un proprio player sia contemplata.


Reply With Quote
  #15  
Old 11-21-2011, 05:20 PM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Quote:
Originally Posted by jobv
Ma non ho idea se il punto due sia risolvibile...non ho capito se la possibilità di usare un proprio player sia contemplata.


Riuscito a risolvere anche questo punto utilizzando le API fornite da livestream.com stesso!


Reply With Quote
  #16  
Old 11-22-2011, 04:55 PM
ABNormal ABNormal is offline
Administrator
 
ABNormal's Avatar
 

Join Date: May 2005
Posts: 3,978
ABNormal is on a distinguished road
Send a message via ICQ to ABNormal Send a message via MSN to ABNormal Send a message via Yahoo to ABNormal
Default

mò tocca a te fare la guida di tutto ciò che hai fatto, spiegandone obiettivi e tecniche usate.
mi raccomando
__________________
«Fino a quando il colore della pelle sarà più importante del colore degli occhi ci sarà sempre la guerra.» Bob Marley


Reply With Quote
  #17  
Old 11-24-2011, 12:17 PM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Quote:
Originally Posted by ABNormal
mò tocca a te fare la guida di tutto ciò che hai fatto, spiegandone obiettivi e tecniche usate.
mi raccomando

Beh...ci provo:

Obbiettivo: realizzare un sistema per la trasmissione di eventi live con due tracce audio (nel mio caso il motivo era che l’evento veniva tradotto simultaneamente in una seconda lingua) senza trasmettere due volte il flusso video.

Premessa: la realizzazione è fattibile se non vi è la necessità di trasmettere audio stereo per nessuna delle due tracce.

Requisiti hardwere: ciò a cui si deve arrivare è una situazione in cui in ingresso audio alla periferica di acquisizione (line-in della scheda audio, audio-in della scheda di acquisizione video ecc…) ci sia su un canale (ad esempio il canale sinistro) la prima traccia audio, sull’altro la seconda.
Nel mio caso era abbastanza fattibile perché la mia scheda di acquisizione video presentava un classico ingresso RCA per ogni canale a cui ho collegato direttamente le uscite del mixer (già mono) dei rispettivi microfoni (sul canale sinistro il microfono del relatore e sul destro quello del traduttore).

Come prima cosa mi sono registrato su livestream.com, creato il mio canale e verificato. Poi ho seguito questa guida per poterlo utilizzare con Adobe Flash Media Encoder (attenzione: nelle impostazioni di quest’ultimo si deve settare l’acquisizione audio in stereo e tenere d’occhio il totale di banda necessaria che il programma calcola in quanto si deve tener presente che il flusso video+audio non deve (nel caso abbiate scelto il piano free su livestream.com) superare i 500 kbps).
A questo punto potete già fare un test per vedere se riuscite a trasmettere.

Veniamo ora al player.
Per poter utilizzare del proprio codice ho seguito le indicazioni di questa pagina.

Come prima cosa bisogna ottenere questa developer key. Ciò che si deve fare è inserire l’URL della pagina che ospiterà il player. Una volta generata la chiave questa resterà tra le vostre chiavi anche se lasciate la pagina o uscite dall’account quindi non state a preoccuparvi di scriverla da qualche parte.
Sempre dalla stessa pagina ho scaricato le API per Flash (un file compresso con all’interno alcuni esempi di player già realizzati e i componenti base per crearne uno) e poi modificato il file “LivestreamPlayer-cs4.fla” (in particolare io ho usato Adobe Flash Professional CS5.5 per aprirlo e modificarlo) per ottenere un player personalizzato.

Oltre all’aspetto grafico che ciascuno può personalizzare come vuole , per quanto riguarda la parte di codice, si deve:

1) Editare la classe “livestreamPlayer” (è nella libreria del progetto) per inserire la Developer Key ottenuta in precedenza, impostare il nome dello stream (dev’essere uguale a quello che avete deciso di adottare in Adobe Flash Media Encoder), impostare i parametri come dimensione della parte destinata al video, tasti da mostrare (per maggiori dettagli guardate qui ). Ecco il mio codice Actionscript 3 (in pratica è il codice modificato del file LivestreamPlayer.as; ho cercato di evidenziare le modifiche precedendole da alcuni commenti):
Code:
ackage com.livestream { import flash.display.MovieClip; import flash.display.Loader; import flash.net.URLRequest; import flash.system.Security; import flash.events.Event; import flash.events.MouseEvent; import flash.events.EventDispatcher; import flash.events.ProgressEvent; import fl.events.SliderEvent; import fl.controls.Slider; import flash.system.LoaderContext; import flash.system.ApplicationDomain; import flash.system.SecurityDomain; import flash.display.DisplayObject; import flash.utils.setTimeout; import flash.media.Sound; import flash.media.SoundMixer; public class LivestreamPlayer extends MovieClip { private static const API_URL:String = "http://cdn.livestream.com/chromelessPlayer/v20/playerapi.swf"; private static const STOP_BUTTON:String = "livestreamPlayerStopButton"; private static const PLAY_BUTTON:String = "livestreamPlayerPlayButton"; private static const TOGGLEPLAY_BUTTON:String = "livestreamPlayerTogglePlayButton"; private static const FULLSCREEN_BUTTON:String = "livestreamPlayerFullscreenButton"; private static const VOLUME_SLIDER:String = "livestreamPlayerVolumeSlider"; private var mainTimeline:Object; private var loader:Loader; public var player:Object; public var _interferenceEnabled = false; public var _textOverlayEnabled = false; public var _powerButtonEnabled = false; public var _volumeOverlayEnabled = false; public var _showThumbnail = false; public var _showPlayButton = true; public var _showPauseButton = true; public var _showMuteButton = true; public var _showFullscreenButton = false public var _showSpinner = true; public var _spinnerSize; public var _devKey; public var _autoLoad = true; public var _loadDelay = 0; public var _width = 320; public var _height = 320; public var _isAutoPlay:Boolean = true; public var _channel:String = "prova_canale_livestream"; public function LivestreamPlayer():void { Security.allowDomain("cdn.livestream.com"); Security.loadPolicyFile("http://cdn.livestream.com/crossdomain.xml"); mainTimeline = stage.getChildAt(0); loaderInfo.addEventListener(Event.COMPLETE, componentLoadedHandler); } private function componentLoadedHandler(event:Event):void { if (_autoLoad) { load(); } else if (_loadDelay != 0) { setTimeout(load, _loadDelay * 1000); } } public function load():void { loader = new Loader(); var url:URLRequest = new URLRequest(API_URL); addChild(loader); loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, loaderCompleteHandler); try { // this is how we load remotely loader.load(url, new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain)); } catch (error:SecurityError) { // this is how we load locally loader.load(url); } } public override function get width():Number { return player ? player.width : 0; } public override function set width(val:Number):void { if (player) { player.width = val; } } public override function get height():Number { return player ? player.height : 0; } public override function set height(val:Number):void { if (player) { player.height = val; } } private function loaderCompleteHandler(event:Event):void { loader.contentLoaderInfo.removeEventListener(Event .COMPLETE, loaderCompleteHandler); player = loader.content; /* Qui ho inserito la dimensione della "finestra" destinata al video * * I parametri originali erano * * player.width = _width; * * player.height = _height; */ player.width = 480; player.height = 360; trace('w:' + _width + ' h:' + _height); onPlayerReady(); } private function playerErrorHandler(event:Event):void { trace('LivestreamPlayer error: ' + Object(event).message); } private function onPlayerReady():void { player.addEventListener("errorEvent", playerErrorHandler); bindClick(STOP_BUTTON, nullary(player.stop)); bindClick(PLAY_BUTTON, nullary(player.play)); //bindClick(TOGGLEPLAY_BUTTON, nullary(player.togglePlayback)); bindClick(FULLSCREEN_BUTTON, nullary(player.toggleFullscreen)); bindEvent(VOLUME_SLIDER, SliderEvent.CHANGE, function(event:SliderEvent):void { player.volume = event.value / 10; }); var volumeSlider = mainTimeline.getChildByName(VOLUME_SLIDER); if (volumeSlider) { (volumeSlider as Slider).value = player.volume * 10; } /* Qui ho modificato alcune proprietà */ //player.showThumbnail = _showThumbnail; player.showThumbnail = false; player.showPlayButton = true; player.showPauseButton = true; player.showMuteButton = true; player.showSpinner = true; player.showFullscreenButton= true; /* Qui ho inserito la Developer Key */ //player.devKey = _devKey; player.devKey = "zLZBnNyZNm-1H2BcoRSo13TrXvZazYwcAtbEy-P751jwd6IDg3OPErNeFHaxeW7Tjvjj_U8PzXhBbRSNdfaTiyH0 AxtRzaE3Okg5qSADikzI6mXInBixxlu0abxQmxCGPN9fz5J6gW 0Fxvwvo6hxNg"; /* Qui ho inserito il nome dello stream */ player.load("prova_canale_livestream"); if (_isAutoPlay) { player.play(); } dispatchEvent(new Event("ready")); } private function bindClick(instanceName:String, callback:Function):void { bindEvent(instanceName, MouseEvent.CLICK, callback); } private function bindEvent(instanceName:String, event:String, callback:Function):void { var displayObject:DisplayObject = mainTimeline.getChildByName(instanceName); if (displayObject) { trace("<LivestreamPlayer> Found object: " + instanceName + ", binding."); displayObject.addEventListener(event, callback); } else { trace("<LivestreamPlayer> Couldn't find object with instance name: " + instanceName + ", skipping."); } } private function nullary(f:Function):Function { return function(arg:*) { f(); }; } } }

2) Inserire il codice per la gestione del doppio audio nel documento principale. C’è da precisare che ho inserito due pulsanti sullo stage per selezionare la lingua di ascolto (i più il pulsante della lingua selezionata ha al suo fianco un segno di spunta che compare per evidenziare quale lingua è settata). Ecco il codice:
Code:
import flash.media.SoundMixer; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.events.MouseEvent; var suono:SoundTransform=SoundMixer.soundTransform; suono.leftToLeft=1; suono.leftToRight=1; suono.rightToLeft=0; suono.rightToRight=0; SoundMixer.soundTransform=suono; lingua1_btn.addEventListener(MouseEvent.CLICK, setLingua1); lingua2_btn.addEventListener(MouseEvent.CLICK, setLingua2); lingua2_ceck.visible=false; lingua1_ceck.enabled=false; //lingua1_btn.enabled=false; //lingua2_btn.enabled=false; /* Estende il canale sinistro del video ad entrambi i canali in output */ function setLingua1(e:MouseEvent){ var suono:SoundTransform=SoundMixer.soundTransform; suono.leftToLeft=1; suono.leftToRight=1; suono.rightToLeft=0; suono.rightToRight=0; SoundMixer.soundTransform=suono; lingua1_ceck.visible=true; lingua2_ceck.visible=false; } /* Estende il canale destro del video ad entrambi i canali in output */ function setLingua2(e:MouseEvent){ var suono:SoundTransform=SoundMixer.soundTransform; suono.leftToLeft=0; suono.leftToRight=0; suono.rightToLeft=1; suono.rightToRight=1; SoundMixer.soundTransform=suono; lingua2_ceck.visible=true; lingua1_ceck.visible=false; }


Ora non resta che esportare il video e inserirlo nella pagina HTML del vostro sito.

Ci tengo a dire che prima di ora la mia unica esperienza con Flash è stata attraverso YouTube…ciò che volgio dire è che non avevo mai usato Flash, Actionscript & Co. Quindi il codice che ho scritto è da ultra-principiante…sicuramente si può fare qualcosa di meglio!


Reply With Quote
  #18  
Old 07-25-2012, 04:09 PM
jobv jobv is offline
Junior Member
 

Join Date: Mar 2011
Posts: 29
jobv is on a distinguished road
Default

Per chi fosse interessato ho reso disponibile il codice usato e testato: Livestream.COM Flash PLayer


Reply With Quote
Reply







Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 02:23 AM.


Powered by: vBulletin Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.