Acontece que vc está chamando métodos do servidor (call) enquanto a resposta
pode não ter vindo com o NetStatus ainda, isso por causa do assincronismo.
Ou, invocando métodos do servidor enauqnto o adapter no red5 ainda não
terminou seu "ciclo" de inicialização.
Recomendo para q altere da seguinte forma:
ncPergunta = new NetConnection();
ncPergunta.client = this;
ncPergunta.addEventListener( NetStatusEvent.NET_STATUS, netStatusPergunta );
//manda conectar
ncPergunta.connect("rtmp://"+ipRed5+"/fitcDemo/"+idApres);
agora no método *netStatusPergunta* vc vai verificar se o info.code é um *
Success*, se sim, daí vc irá chamar os métodos via call:
> ncPergunta.call("streamManager.setStreamAudioName", null, param2);
> ncPergunta.call("streamManager.setPartVideo", null, param3);
> ncPergunta.call("streamManager.setPartVideoPerg", null, param4);
> ncPergunta.call("streamManager.setParticipanteId", null, param1);
> ncPergunta.call("streamManager.recordAudioShow", null);
>
Ou seja, vc estará chamando os métodos só qnd realmente vc já se logou na
app red5 e já teve sua conexao aceita (accept).
[]s
Em 11 de março de 2010 08:56, Vinicius <[email protected]> escreveu:
> Caros,
>
> Estou precisando separar algumas funcionalidades em botões separados
> para que não de problema, o que está acontecendo:
>
> Se faço:
>
> ncPergunta = new NetConnection();
> ncPergunta.addEventListener( NetStatusEvent.NET_STATUS,
> netStatusPergunta );
> ncPergunta.connect("rtmp://"+ipRed5+"/
> fitcDemo/"+idApres);
> ncPergunta.client = this;
> ncPergunta.call("streamManager.setStreamAudioName", null, param2);
> ncPergunta.call("streamManager.setPartVideo", null, param3);
> ncPergunta.call("streamManager.setPartVideoPerg", null, param4);
> ncPergunta.call("streamManager.setParticipanteId", null, param1);
> ncPergunta.call("streamManager.recordAudioShow", null);
>
> essa é a implementação do servidor (red5):
>
> public void recordAudioShow(IConnection connAudio) {
> try{
> System.out.println("connAudio: "+connAudio);
> System.out.println("recordAudioShow - Recording show
> for: {}"
> +
> connAudio.getScope().getContextPath());
> // Get a reference to the current broadcast stream.
> appAudio = new StreamApplication();
> System.out.println("appAudio: "+appAudio);
> appAudio.roomConnect(connAudio, null);
> // streamName = getStreamName();
>
> System.out.println("connAudio.getScope():
> "+connAudio.getScope());
> System.out.println("getParticipanteId():
> "+getParticipanteId());
> ClientBroadcastStream streamAudio =
> (ClientBroadcastStream)
> appAudio
>
> .getBroadcastStream(connAudio.getScope(), getParticipanteId());
> try {
> // Save the stream to disk.
> // stream
> // .saveAs("participante_part" +
> getPartVideo() + "_"
> // + getParticipanteId() + "_part"
> // + getPartVideoPerg(), false);
> streamAudio.saveAs("//part" + getPartVideo()
> + "//" +
> "participante"
> + getPartVideoPerg(),
> false);
> } catch (Exception e) {
> log.error("Error while saving stream: {}",
> participanteId);
> }
> } catch(Exception e){
> e.printStackTrace();
> }
>
> }
>
> Ao executar dá:
>
> java.lang.NullPointerException
> at
> org.red5.server.adapter.MultiThreadedApplicationAdapter.getBroadcastS
> tream(MultiThreadedApplicationAdapter.java:779)
> at
> org.red5.demos.fitc.StreamManager.recordAudioShow(StreamManager.java:
> 157)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:217
> )
> at
> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:123
> )
> at
> org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:157)
>
> at
> org.red5.server.net.rtmp.RTMPHandler.onInvoke(RTMPHandler.java:409)
> at
> org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHand
> ler.java:143)
> at
> org.red5.server.net.rtmp.RTMPMinaIoHandler.messageReceived(RTMPMinaIo
> Handler.java:119)
> at org.apache.mina.common.support.AbstractIoFilterChain
> $TailFilter.messa
> geReceived(AbstractIoFilterChain.java:570)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageR
> eceived(AbstractIoFilterChain.java:299)
> at org.apache.mina.common.support.AbstractIoFilterChain.access
> $1100(Abst
> ractIoFilterChain.java:53)
> at org.apache.mina.common.support.AbstractIoFilterChain
> $EntryImpl$1.mess
> ageReceived(AbstractIoFilterChain.java:648)
> at
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorF
> ilter.java:220)
> at org.apache.mina.filter.executor.ExecutorFilter
> $ProcessEventsRunnable.
> run(ExecutorFilter.java:264)
> at java.util.concurrent.ThreadPoolExecutor
> $Worker.runTask(ThreadPoolExec
> utor.java:886)
> at java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor
> .java:908)
> at java.lang.Thread.run(Thread.java:619)
>
> Se crio um botão para:
>
> ncPergunta = new NetConnection();
> ncPergunta.addEventListener( NetStatusEvent.NET_STATUS,
> netStatusPergunta );
> ncPergunta.connect("rtmp://"+ipRed5+"/
> fitcDemo/"+idApres);
> ncPergunta.client = this;
>
> e outro para:
> ncPergunta.call("streamManager.setStreamAudioName", null, param2);
> ncPergunta.call("streamManager.setPartVideo", null, param3);
> ncPergunta.call("streamManager.setPartVideoPerg", null, param4);
> ncPergunta.call("streamManager.setParticipanteId", null, param1);
> ncPergunta.call("streamManager.recordAudioShow", null);
>
>
> Aqui vai redondo, mas eu queria juntar essa funcionalidades de uma vez
> só.
>
> Grato,
> Vinicius.
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
--
Mario Junior
http://blog.mariojunior.com/
@mariojunior
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev