Biblioteca de processamento de vídeo para Java

Eu quero extrair quadros de um vídeo e aplicar alguns filtros, como gabor / hough etc. Qual biblioteca Java seria perfeita para lidar com todos os tipos de codificações de vídeo? Eu estive olhando para GStreamer, JMF, Xuggler etc., mas sou incapaz de decidir qual seria o melhor. Também estou procurando editar os quadros e fazer o vídeo com os novos quadros.

Resposta 1

Se você deseja executar operações de baixo nível, como extrair quadros e manipulá-los, o Xuggler seria a melhor opção, porque as APIs são voltadas para esse nível baixo. Ele funciona no ffmpeg, portanto pode lidar com todos os tipos de codificações de vídeo.

Não use o JMF para nada, é antigo, desatualizado e com erros - o GStreamer é bom, mas a API se presta mais à reprodução de vídeos em vez de manipular os quadros.

Resposta: 2

Você pode experimentar o Marvin Framework . Ele usa JavaCV para codificações de vídeo e acesso ao dispositivo, mas todos os algoritmos de processamento de imagem são Java puro.

É muito fácil carregar um vídeo e processar os quadros em tempo real, como mostrado no exemplo de detecção de borda abaixo.

insira a descrição da imagem aqui

Código fonte:

import static marvin.MarvinPluginCollection.*;

public class SimpleVideoProcessing extends JFrame implements Runnable{

    private MarvinVideoInterface    videoAdapter = new MarvinJavaCVAdapter();
    private MarvinImagePanel        videoPanel = new MarvinImagePanel();
    private MarvinImage             videoFrame, videoOut = new MarvinImage(640,480);

    public SimpleVideoProcessing() throws MarvinVideoInterfaceException{
        super("Simple Video Processing using Marvin");
        add(videoPanel);
        // Load video file and start the processing thread
        videoAdapter.loadResource("./res/snooker.wmv");
        new Thread(this).start();
        setSize(640,500);
        setVisible(true);
    }

    public void run() {
        try {
            while(true){
                // Request, process and show the video frame.
                videoOut.clear();
                videoFrame = videoAdapter.getFrame();
                prewitt(videoFrame.clone(), videoOut);
                videoPanel.setImage(videoOut);
            }
        } catch (MarvinVideoInterfaceException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws MarvinVideoInterfaceException {
        new SimpleVideoProcessing().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Resposta: 3

JMF é uma boa escolha. Mas se o tempo do processo for importante no seu código, é melhor usar o Xuggler. Obviamente, o JMF é mais geral que o Xuggler.

Resposta: 4

Basicamente, como faço para gerar isso? Tenho certeza de que esse é um trabalho para o GridBagLayout, mas não consigo entender como dimensionar corretamente o 'Painel de Ação' versus a 'Barra de Menus'. O vermelho & ...

hibernate - 3.6.0.Final joda - 1.4 como suportar joda.DateTime direto no pojo para hibernate, para que possa ser session.saveOrUpdate (rateCodeId); classe pública pojo RateCodeId implementa java.io.Serializable ...

Eu tenho uma imagem em buffer com os tamanhos do meu quadro: public BufferedImage img; public static int WIDTH = 800; public static int HEIGHT = 600; img = new BufferedImage (LARGURA, ALTURA, BufferedImage ....

Eu quero adicionar um arrayList em um método durante a instrumentação. Eu tentei como mencionado em (Javassist CannotCompileException ao tentar adicionar uma linha para criar um mapa), mas lança um diferente ...