Problema com Thread pra conversão de vídeos

Bom dia a todos,
criei uma thread para ler um array de videos e converter os vídeos usando o ffmpeg.exe, ela chega a iniciar o processo (ffmpeg.exe) contudo a conversão só termina quando a thread é finalizada, ou seja, o arquivo de saída de vídeo chega a ser criado com alguns KBs mas fica ‘bloqueado’, mesmo colocando a thread para ‘dormir’ o processo não finaliza, só termina quando o laço é finalizado.

chamada da thread

import javax.swing.JOptionPane;


public class Principal {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		char flag = 'y';
		Midia midia = new Midia();
		ThreadTeste01 thread = new ThreadTeste01();
		
		while (flag == 'y') {
			//Caminho ORIGEM e DESTINO do vídeo.
			midia.caminho = JOptionPane.showInputDialog(null,"Insira o caminho do arquivo de entrada").toString();
			midia.destino = JOptionPane.showInputDialog(null,"Insira o caminho do arquivo de saída").toString();
			//Adiciona o vídeo no array de vídeos a serem executados.
			thread.addMidiaPooll(midia);
			//confirma
			flag = JOptionPane.showInputDialog(null,"Digite Y para continuar ou N para sair").toCharArray()[0];
		}
		if (flag == 'n')
			thread.start();
	
	}

}

thread:

import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;


public class ThreadTeste01 extends Thread {
	List<Midia> midias = new ArrayList<Midia>();
	String comandoConvert = null;
	
	public String getComandoConvert() {
		return comandoConvert;
	}

	public void setComandoConvert(String comandoConvert) {
		this.comandoConvert = comandoConvert;
	}
	/**
	 * Formato AVI
	 */
	
	public static final String AVI_FORMAT = "avi";
	
	public ThreadTeste01() {
		
    }
	
	public void addMidiaPooll(Midia midia) {
		midias.add(midia);
	}
	
    public void run() {
    	Process process = null;
    	Midia midiaAProcessar = midias.get(0);
    	int i = 0;
    	System.out.println("Teste");
        while (!midias.isEmpty()){
        	if ((!midias.isEmpty()) && (midiaAProcessar != null)){
	        	setComandoConvert(command(midiaAProcessar.getCaminho(), midiaAProcessar.getDestino()));
				try {

					process = Runtime.getRuntime().exec(getComandoConvert());
					
					midias.remove(0);
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	}else{
        		System.out.println("Não há videos a serem convertidos!");
        	}
            
        }        
    }
    /**
     * Comando de Conversão
     */
    private static final String COMMAND_AVI = "ffmpeg.exe -i   {0}  -qmin 6 -qmax 26 -ar 22050 -f flv -y  {1}";
    
    /**
     * String do comando de conversão
     * @param videoIn
     * @param videoOut
     * @return
     */
    
    private static String command(String videoIn, String videoOut) {
		String command = "";
		String fileName = videoIn.substring(videoIn.lastIndexOf("/") + 1,
				videoIn.length());
		String extension = fileName.substring(fileName.lastIndexOf(".") + 1,
				fileName.length());
		// formato AVI
		if (extension.equalsIgnoreCase(AVI_FORMAT)) {
			command = new MessageFormat(COMMAND_AVI).format(new Object[] {
					videoIn, videoOut });
		} else {
			throw new IllegalArgumentException(
					"Formato de arquivo não suportado:" + extension);
		}
		return command;
	}
}
class Midia {
	String caminho = null;
	String destino = null;
	
	public String getCaminho() {
		return caminho;
	}
	public void setCaminho(String caminho) {
		this.caminho = caminho;
	}
	public String getDestino() {
		return destino;
	}
	public void setDestino(String destino) {
		this.destino = destino;
	}
}

Tente dar um join.

thread.start(); thread.join();

Ou notar qual erro… execeção, se há alguma.