(JMF) Meu envio de video stream RTP está correto ? URGENTE

0 respostas
R

opa galera
Seguinte… estou desenvolvendo uma aplicação distribuida que integra computadores e PDAs…

A aplicação é um sistema integrado de câmeras onde cada câmera pode ser vista pelo PDA…
Até agora… todas as tentativas de ver a imagem da câmera fracassaram, agora estou tentando criar um servidor RTP com JMF para disponibilizar o stream da web cam para ser vista no PDA…

Estou com dúvida se o meu código para este JMF RTP está errado… .deem uma olhada…

Processor proc = null;
		javax.media.protocol.DataSource ds = null;
		TrackControl[] tc = null;
		int y;
		boolean encodingOk = false;
		Vector<javax.media.protocol.DataSource> datasources = new Vector<javax.media.protocol.DataSource>();
		
		for( int x = 0 ; x < camerasInfo.length ; x++ ){
		
			try {
				proc = Manager.createProcessor(camerasInfo[x].getLocator());
			}catch (NoProcessorException e) { System.out.println("Erro ao intânciar PROCESSOR: " + e);	}
			 catch (IOException e) { System.out.println("Erro ao intânciar PROCESSOR: " + e); }
			
			proc.configure();
			
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			
			proc.setContentDescriptor( new ContentDescriptor(ContentDescriptor.RAW_RTP) );
			tc = proc.getTrackControls();
			
			for( y = 0; y < tc.length ; y++ ){
				if (!encodingOk && tc[y] instanceof FormatControl){
					if( ( (FormatControl) tc[y] ).setFormat( new VideoFormat(VideoFormat.RGB) ) != null ){
						tc[y].setEnabled(true);						
					}else{
						encodingOk = true;
					}
				}else{
					tc[y].setEnabled(false);
				}
			}
			
			proc.realize();
			
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}
			
			try{
				ds = proc.getDataOutput();
			}catch(NotRealizedError e){
				System.out.println("ERRO ao realizar datasource: " + e);
			}catch(ClassCastException e){
				System.out.println("Erro ao realizar datasource: " + e);
			}
			
			datasources.add(ds);
			System.out.println( ds.getLocator() );
			
			encodingOk = false;
		}
		
		
		MediaLocator ml = new MediaLocator("rtp://10.1.1.100:99/video");
		try {
			DataSink datSink = Manager.createDataSink(ds , ml);
			datSink.open();
			datSink.start();
		} catch (NoDataSinkException e) {
			System.out.println("Erro ao instanciar DataSink: " + e );
		} catch (SecurityException e) {
			System.out.println("Erro ao iniciar DataSink: " + e);
		} catch (IOException e) {
			System.out.println("Erro ao iniciar DataSink: " + e);
		}

O código acima está certo ou errado ?
Alguem sabe me dizer ?

Outra dúvida que eu tenho é a seguinte…
Eu posso atravéz da MMAPI acessar este stream criado pela JMF ?

Aguardo respostas…

Rodrigo Kerkhoff

Criado 16 de outubro de 2006
Respostas 0
Participantes 1