Qual biblioteca Java usar para gravar um vídeo de uma câmera conectada?

Você teria pensado que há uma solução simples para isso, mas não há 🙁

Meu aplicativo precisa capturar um stream de uma câmera conectada USB / firewire (ou o que quer que seja a conexão) (o resultado seria um arquivo como output.flv ). Eu preferiria que eu pudesse detectar todas as câmeras conectadas e escolher qual delas usar (uma ou mais ao mesmo tempo -> um ou mais arquivos de saída). A aplicação tem que ser de plataforma cruzada.

Bibliotecas encontradas:

  1. Xuggle – não muito bom suporte de câmera. Bom para manipular imagens e vídeos.
  2. JMF – uma API antiga, mas se eu puder usá-lo, eu vou. Não vejo um link do MAC OS X na página de downloads.
  3. FMJ – parece uma versão melhor do JMF mas não consegue encontrar uma maneira de instalá-lo.
  4. LTI-CIVIL – FMJ usa. Parece que apenas captura imagens da câmera (não de vídeo). Eu poderia usar o Xuggle para criar um vídeo a partir de imagens tiradas do LTI-CIVIL. E como o FMJ, é difícil de instalar.

Quais são suas sugestões sobre isso?

Eu recomendo o VLCj para isso – ele deve ser capaz de transmitir de webcams para uma canvas Java sem quaisquer dificuldades. Ele usa código nativo, então você precisa fornecer libvlc.so / dll, mas a partir daí deve funcionar em todas as principais plataformas (Windows, Mac, Linux).

Você pode precisar olhar para jogadores fora do processo por uma confiabilidade completa, o que é um pouco mais complexo (veja aqui meus esforços até agora), mas uma vez que você tenha conseguido isso, deve funcionar bem.

Não há realmente um bom suporte de câmera para Java. Você terá que usar código nativo, adaptado para cada plataforma, através do JNI para obter captura de vídeo para o seu projeto.

Há uma questão relacionada aqui . Basicamente, eles estão sugerindo que o OpenCV esteja envolvido com o JNI.