Ola Developers,
Desenvolvi um aplicativo utilizando o JMF 2.1.1
onde um servidor controla os players de uma ou mais sessões e é o responsável
por controlar transmissões multi-unicast.
Esta tudo funcionando mas quando o servidor é
instalado no ambiente de produção, em um linux caldera que está atras de um
firewall, não consigo fazer um bind de streams provenientes da Internet, ou
seja; o servidor responde por 2 IPs (ip1 e ip2, por exemplo), onde o ip1 é da
intranet e o ip2 da internet. O fato é que os datagrams packets provenientes de
uma transmissão estão chegando ao servidor corretamente ( verifiquei com um
aplicativo teste usando DatagramSocket ) mas o servidor não consegue efetuar o
bind. Não ocorre erro mas também o stream não é capturado??!
A seguir um pedaço do código utilizado para
inicializar a sessão e capturar os streams:
Object dataSync = new
Object();
...
void StartServer()
{
SessionAddress localAddr;
SessionAddress destAddr; ... ipAddr =
InetAddress.getByName(objSessao.address); // objSessao.address é um endereço IP
localAddr=
new SessionAddress(InetAddress.getLocalHost(), objSessao.port); //
objSessao.port=20000
destAddr = new SessionAddress(ipAddr,objSessao.port); objManager[i]
= (RTPManager) RTPManager.newInstance();
objManager[i].initialize(localAddr);
BufferControl bc =
(BufferControl)objManager[i].getControl("javax.media.control.BufferControl");
if (bc != null) bc.setBufferLength(350); objManager[i].addTarget(destAddr);
...
System.out.println("Etapa 1");
try{
synchronized (dataSync) { while (!dataReceived) { if (!dataReceived) System.out.print("."); dataSync.wait(1000); } } } catch (Exception e) {} System.out.println("Etapa
2"); ....
}
onde a variavel dataReceived será setada no
"update" quando um "NewReceiveStreamEvent" ocorrer:
public synchronized void update(
ReceiveStreamEvent evt) {
...
if (evt
instanceof NewReceiveStreamEvent) {
....
synchronized (dataSync) {
dataReceived = true; dataSync.notifyAll(); }
}
}
Quando envio um stream capturado de uma webcam para
o ip1(intranet) o evento NewReceiveStreamEvent é disparado mas quando envio para
o ip2(internet) não acontece nada e o programa fica parado no while
(!dataReceived). Alguem sabe como resolver?
[]s
Ricardo A Harari
|
- Re: [java-list] JMF - Java Media Framework help!!!! R.A.Harari
- Re: [java-list] JMF - Java Media Framework help!!... Sergio Oliveira Jr.