Estou usando Vraptor e tenho uma aplicação que faz upload de vídeos pro servidor, no caso o meu computador.
Salvo apenas o nome do vídeo do banco e ao acessar o vídeo vou buscar o vídeo no numa pasta do meu computador.
<embed
width="350"
height="230"
src="<c:url value='/jwplayer/tocador.swf' />"
allowscriptaccess="always" allowfullscreen="true"
flashvars="file=<c:url value='/videos/${video.id}/video' />"
/>
@Get("/videos/{id}/video")
public Download video( Long id ) {
Video video = videoDao.load(id);
String variavel = System.getenv("VARIAVEL_AMBIENTE");
char separator = java.io.File.separatorChar;
String videoFileName = video.getVideoFileName();
String path = variavel + separator + "videos" + separator + videoFileName;
File file = new File(path);
FileDownload fileDownload = new FileDownload(file, "video/x-flv", video.getId().toString() + ".flv");
return fileDownload;
}
Acontece que o JWPlayer não executa o vídeo, alguém poderia ajudar? Não sei se é forma certa de se fazer.
se vc aponta diretamente pra esse cara funciona? tipo se vc colocar o vídeo dentro de WebContent e colocar o caminho dele
Sim, se eu colocar o vídeo dentro do WebContent funciona, aí eu só coloco o path dele no jwPlayer mas dessa forma aí não funciona.
tenta ver pelo firebug ou algo do tipo quais são os headers que o servidor manda quando acessa o vídeo diretamente…
possívelmente vc tem que mandar os mesmos headers
Cara, percebi uma coisa, com o vídeo dentro do WebContent, no momento que eu clico pra executar o vídeo o request é feito e ele começa a executar.
Mas buscando o vídeo de uma pasta de fora não faz isso, pois o request é feito ao chamar a URL e o java me retorna o arquivo. O mais interessante é que
realmente o arquivo é retornado, eu consigo fazer até download dele se quiser. Sobre os headers pelo que vi são os mesmos.
Mas alguma dica??? hehehe
se vc faz o request na mão pra url do video que passa pelo controller ele toca? quer dizer, ele faz o download do video corretamente?
Deixa eu ver se entendi a sua pergunta, se eu acesso a url direto ele vai lá no controller e me retorna o vídeo e faz download e quando executo no computador dá certo.
Agora no jwplayer não executa de jeito nenhum…
faz o seguinte:
coloca dois jwplayers na página, um apontando pro vídeo direto no arquivo e um apontando pro mesmo vídeo passando pelo controller.
abre a aba Network (ou Rede) do Firebug e veja as requisições pros dois vídeos e veja os cabeçalhos de requisição e resposta.
veja o que tem de diferente neles.
ah… só uma coisa também: mude a url do vídeo do controller pra terminar com .mp4 (ou a extensão do vídeo), isso é importante pro jwplayer.
Cara, realmente só faltava o .extensaoDoVideo (.mp4, .flv) no final da url.
Agora ficou assim @Get("/videos/{id}/video.flv") e deu certo.
Vlw mesmo