Transmitir video usando sockets

7 respostas
T

Pessoal eu queria fazer era pegar um arquivo de video que está no meu computador e transmití-lo para um player de video (estou usando o VLC media player) utilizando sockets pelo protocolo UDP. O código abaixo é o que estou usando para fazer isso e funciona muito bem, quando o arquivo de vídeo já está criado no meu pc previamente.

import java.io.*;
import java.net.*;

public class Envia{
	public static void main(String args[]) throws IOException{

        	byte[] bufferSend = new byte[1024];
        	int len;
        	File f = new File("nome do arquivo");

        	InputStream in = new FileInputStream(f);
        	DatagramSocket socket = new DatagramSocket();
        	
                //Transmite localmente
		InetAddress end = InetAddress.getByName("127.0.0.1");
                
                //Utiliza a porta 6666 para a transmissão
		DatagramPacket pacoteEnviado = new DatagramPacket(bufferSend,bufferSend.length,end,6666);
		
		while ((len = in.read(bufferSend)) > 0) {
            		socket.send(pacoteEnviado);
		}
		
        	socket.close();
	}
}

Porém isso é apenas uma parte do meu projeto. O problema está no fato que ao colocar esse codigo no meu programa principal (que é onde esse arquivo de vídeo é criado) ele dificilmente consegue fazer a transmissão corretamente. 95% das vezes ele trava logo no inicio. Executo o video depois com o vlc só pra testar e o arquivo está tocando normalmente (n está corrompido), agora porque que na transmissão ele travou?

Espero que tenha dado pra entender o problema :roll:

7 Respostas

T

Pelo que imagino, você não está usando o protocolo adequado para falar com o VLC. Se é para falar UDP, você precisa mandar pacotes RTP, que não são uma réplica exata do conteúdo do arquivo de vídeo.

E

Opa…Tudo bem?

Cara…Vi que você está trabalhando com vídeos sobre internet em Java e que está utilizando o VCL player.
Eu estou desenvolvendo uma aplicação de indexação de vídeos em Java que também trabalha com vídeos sobre internet…A diferença é que estou utilizando o JMF para tanto, e tendo muita dor de cabeça com ele…
Já dei uma olhada no VCL só que ainda não entendi direito como integrar esse cara na minha aplicação Java…

Meu software é uma applet que pode ser acessada por qualquer um com um browser (em qqer plataforma) em qualquer lugar…Queria saber se o VCL pode ser integrado a um contexto assim…

T

E como faço pra implementar esse envio de pacotes RTP em java? Tenho que usar a JMF (por favor diga que não! :roll: )?

T

É uma boa pergunta.

E

Olha…Sei que JMF faz isso…Sem muito esforço, inclusive…

Mas, tempos atrás dei uma pesquisada nisso e encontrei coisas como:


https://jrtp.dev.java.net/

Só que nunca usei…

E

Mas gostaria de saber um pouco mais da sua experiência em integrar o VCL ao Java…

T

A minha experiência é exatamente zero. É que olhei a documentação do VCL e vi que o suporte a UDP requer que seja usado o protocolo RTP (entre outros).

Criado 23 de setembro de 2008
Ultima resposta 25 de set. de 2008
Respostas 7
Participantes 3