Criação de Vídeos a partir de uma sequencia de imagens

Pessoal, estou desenvolvendo um projeto em que criarei um video 3D side by Side a partir de uma sequencia de imagens capturadas de uma camera firewire. Nenhum processamento precisa ser feito em real time. Eu preciso pegar essa sequencia de imagens e montar um video com elas. Minha necessidade é trabalhar com imagens no formato mais cru possível (bmp, tiff, pgm, etc).

Queria montar um video com 30 frames por segundo. Alguém sabe como fazer??? Se possivel num formato de saida sem compressão.

Desde já mto obrigado.

É sim zerocall! o código abaixo faz isso, lembrando que você deve utilizar o conversor ffmpeg.exe, o código abaixo recebe imagens no formato “image1.png, image2.png…” e transforma em um vídeo .flv com uma taxa de frames de 30fps


package converter;

import java.io.File;

public class ConverterImagensEmVideo {

    public static void main(String[] args) {
        


        // recebe imagens no formato "image1.png, image2.png..." e transforma em um vídeo .flv com uma taxa de frames de 30fps
        String command = "ffmpeg -f image2 -i midia/image%d.png -r 30 video.flv";

        System.out.println("Conversor.main() " + command);

        Process p = null;
        try {
            System.out.println(command);
            p = Runtime.getRuntime().exec(command);
        } catch (Exception e) {
            System.out.println("Conversor.main() erro " + p);
            System.out.println(e);
        }
        //System.out.println("Conversor.main() terminei " + i);

    }
}

Como eu consigo executar o ffmpeg antes de emitir o comando?

E Como gerencio as pastas que onde devem ser criados e lidos os arquivos?

Vlw

Dica: em vez de usar um programa Java para iniciar o ffmpeg, é melhor você aprender a usar os parâmetros do ffmpeg e criar uma batch ou script para fazer as coisas exatamente do jeito que você quer. A parte de gerenciamento de pastas, por exemplo, é um dos parâmetros do ffmpeg.

Ache a documentação dos parâmetros de linha de comando na Internet.

Além disso, se aprender a usar direitinho o ffmpeg, pode usar um outro formato que não flv (por exemplo, pode gerar um mp4).

Mais esse script eu iria desenvolver em que?
Eu quero executar as funções de conversão e gerenciamento destes arquivos em um servidor web.Tem como desenvolver um script para executar essas bibliotecas que rode em um servidor?

Eu estou vendo algumas funções na documentação e percebi que realmente é só passar os parametros para o ffmpeg que ele executa o que queremos.

Você acha mais viável criar um script ou um bath?

Outra coisa entanglement, quando a imagem não sofrer nenhuma alteração significativa em um tempo x será enviado uma unica imagem com um log.txt informando o tempo que a imagem devera permanecer sendo exibida, tem como ler e trabalhar com log através de scripts ou bath?

Você sabe como eu consigo o código em C da função que recebe estes paramentro

ffmpeg -f image2 -i midia/image%d.png -r 30 video.flv

???

String command = "ffmpeg.exe -f image2 -i image%d.jpg video.flv";  
	  
	        System.out.println("Conversor.main() " + command);  
	  
	        Process p = null;  
	        try {  
	            System.out.println(command);  
	            p = Runtime.getRuntime().exec("D:\\Convert\\"+command);  
	        } catch (Exception e) {  
	            System.out.println("Conversor.main() erro " + p);  
	            System.out.println(e);  
	        }  

Quando executo este código ele não está criando o arquivo .flv porém se eu copio o mesmo comando para o cmd no diretório D:\Convert\ ele funciona normalmente. Alguma dica do que pode ser?

p = Runtime.getRuntime().exec(" cmd D:\\Convert\\"+command); 

Tenta assim.

Executou mais não ta dando certo não.

Vou tentar utilizar o framework OpenCV esse ffmpeg não ta rolando a integração :cry:

Eu estou executando o código abaixo e não funciona mais também não da erro.

public class ConvertImageToVideo {
	
	public static void main(String[] args) {  
         
	// recebe imagens no formato "image1.png, image2.png..." e transforma em um vídeo .flv 
	        String dir = "c:\\Convert\\";
			String comando = "ffmpeg.exe -f image2 -i image%d.jpg videoCriadoComJar.flv";  
	  
			Process p = null;  
	        try {  
	            System.out.println("Comando executado:"+comando);  
	            p = Runtime.getRuntime().exec(dir+comando); 
	            JOptionPane.showMessageDialog(null, "Conversão realizada com Sucesso.\n Verifique o diretório C:/Convert");
	            
	        } catch (Exception e) {  
	            System.out.println("Conversor.main() erro " + p);  
	            System.out.println(e);  
	        }  
	       

Porém se eu executo o mesmo código no CMD funciona. Alguma idéia porque???

d:\Convert>ffmpeg.exe -f image2 -i image%d.jpg videoCriadoComJar.flv
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52.  9.100 / 52.  9.100
  libavcodec     54. 77.100 / 54. 77.100
  libavformat    54. 37.100 / 54. 37.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.102 /  3. 23.102
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 17.101 /  0. 17.101
  libpostproc    52.  2.100 / 52.  2.100
Input #0, image2, from 'image%d.jpg':
  Duration: 00:00:02.00, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj420p, 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc
Output #0, flv, to 'videoCriadoComJar.flv':
  Metadata:
    encoder         : Lavf54.37.100
    Stream #0:0: Video: flv1 ([2][0][0][0] / 0x0002), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> flv)
Press [q] to stop, [?] for help
frame=   50 fps=0.0 q=2.1 Lsize=     109kB time=00:00:02.00 bitrate= 445.4kbits/s    
video:108kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.917149%

d:\Convert>