Transmitir video usando sockets

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.

[code]
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();
}

} [/code]

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:

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.

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…

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: )?

É uma boa pergunta.

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…

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

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).