Transmissão de vídeo via internet

10 respostas
E

Tenho uma aplicação que precisa enviar um arquivo de vídeo armazenado em um servidor para um cliente. É imprescindível que o vídeo chegue inteiro do outro lado, visto que, depois de estar no cliente eu vou localizar uma parte específica dele para exibir ao usuário.

Para realizar a tarefa estou usando o JMF e o engine RTP que ele implementa. Todavia, RTP roda sobre UDP, certo? E UDP não tem garantia de entrega, certo? Então se eu quisesse realizar uma transmissão em que do outro lado fosse garantido que meu vídeo está completo, deveria usar TCP? É comum isso?

Além disso, alguém sabe de uma forma de enviar uma parte específica do vídeo apenas, de modo que do outro lado esse conjunto de dados possa ser visualizado em um player? Porque ficar enviando o arquivo inteiro é desperdício de recursos de rede, processamento e tempo do usuário…

10 Respostas

E

Ninguém?

P

RTP = Real Time Protocol. É implementado em UDP justamente para que se possa jogar fora pacotes sempre que as condições de rede se deteriorarem. Para o seu requisito de garantia de integridade, TCP é o caminho.

F

por favor, explique melhor “localizar uma parte específica dele”…

rmendes08

bem, a primeira coisa que precisa ser esclarecida é : vc deve enviar o arquivo de vídeo ou os dados do vídeo? pode parecer a mesma coisa mas não é …
se vc for enviar o arquivo inteiro, vc deve enviar via TCP, que garante a entrega de todo o arquivo. Porém, se vc for enviar os dados de vídeo em uma trasmissão (um stream), aí não tem jeito, tem que ser via UDP. Isso pq o TCP tem um mecanismo de controle de congestionamento, e diferentemente do UDP não permite que a aplicação regule a taxa de transmissão dos dados.

E

Primeiramente, obrigado pela atenção dispendida…

Quando digo que preciso localizar uma parte dele, quero dizer que preciso posicionar o player num determinado tempo do vídeo, e exií-lo a partir deste ponto, até um segundo ponto (este marca o fim da exibição)…

Por exemplo, tem um vídeo de um jogo de futebol, aos 15 minutos tenho a cena de um gol, que dura uns 3 minutos, vamos supor. Tenho que estar apto a exibir apenas este trecho (dos 15 aos 18 minutos, neste exemplo)…Já faço isso tranquilamente com arquivos locais, todavia, minha ferramenta de anotação de vídeo (onde anotação é marcar trechos de vídeo e descrever as informações contidas nestes trechos) vai ser o cliente de um projeto maior: uma videoteca digital online, que guardará vídeos e as descrições das cenas dos vídeos…

Ou seja, além de me preocupar com a parte de streamming, que já está complicada devido às limitações da JMF, preciso lidar com esse tipo de coisa.

Ou seja, se meu usuário quer ver apenas aqueles 3 minutos de vídeo, tenho como enviar só os dados referentes àquele trecho e exibí-los do outros lado?

E

rmendes08:
bem, a primeira coisa que precisa ser esclarecida é : vc deve enviar o arquivo de vídeo ou os dados do vídeo? pode parecer a mesma coisa mas não é …
se vc for enviar o arquivo inteiro, vc deve enviar via TCP, que garante a entrega de todo o arquivo. Porém, se vc for enviar os dados de vídeo em uma trasmissão (um stream), aí não tem jeito, tem que ser via UDP. Isso pq o TCP tem um mecanismo de controle de congestionamento, e diferentemente do UDP não permite que a aplicação regule a taxa de transmissão dos dados.

Meu requisito é poder exibir um determinado trecho de um vídeo do outro lado…Mas queria iniciar enviando o vídeo todo. Ou seja, preciso enviar os dados do vídeo…Do outro lado essas informações devem ser assistíveis e manipuláveis (avançar e retroceder no tempo do vídeo, pausar, reassistir depois que o vídeo acaba,…)…

Se eu fizesse com TCP, minha idéia era enviar tudo, e só depois que chega tudo no lado cliente, habilitar a interface a manipular o vídeo…Não sei o que é melhor…

F

Primeiramente, obrigado pela atenção dispendida…

Quando digo que preciso localizar uma parte dele, quero dizer que preciso posicionar o player num determinado tempo do vídeo, e exií-lo a partir deste ponto, até um segundo ponto (este marca o fim da exibição)…

Por exemplo, tem um vídeo de um jogo de futebol, aos 15 minutos tenho a cena de um gol, que dura uns 3 minutos, vamos supor. Tenho que estar apto a exibir apenas este trecho (dos 15 aos 18 minutos, neste exemplo)…Já faço isso tranquilamente com arquivos locais, todavia, minha ferramenta de anotação de vídeo (onde anotação é marcar trechos de vídeo e descrever as informações contidas nestes trechos) vai ser o cliente de um projeto maior: uma videoteca digital online, que guardará vídeos e as descrições das cenas dos vídeos…

Ou seja, além de me preocupar com a parte de streamming, que já está complicada devido às limitações da JMF, preciso lidar com esse tipo de coisa.

Ou seja, se meu usuário quer ver apenas aqueles 3 minutos de vídeo, tenho como enviar só os dados referentes àquele trecho e exibí-los do outros lado?

Era o que eu imaginava…

Para isso de uma olhada em RTMP, que permite indexamento e transmissão a partir do ponto indexado.

E

Sabe se existealguma implmentação este protocolo para Java?

F

Não sei…

Mas acho que o servidor Red5 transmite videos em RTMP, ele é feito em Java.

De uma olhada no que ele usa talvez te ajude…

E

Valeu cara…Vou dar uma olhada com mais calma…

Tu sabe se ele provê componentes para exibição desses vídeos em flash?
Ele rodaria em uma base swing ou eu teria que fazer minha aplicação em JSP?

Valeu…

Criado 12 de junho de 2008
Ultima resposta 16 de jun. de 2008
Respostas 10
Participantes 4