public void start() {
		synchronized (this) {

			if (ps != null) {
				ps.destroy();
				ps = null;
			}
			running = true;

			Thread t = new Thread(new Runnable() {

				@Override
				public void run() {

					String[] cmd;
					if (from.endsWith("TVCardTC4000SD")) {
						cmd = new String[] { "/usr/local/bin/ffmpeg", "-deinterlace",
								 "-f", "video4linux", "-i",
								"/dev/pci_tv", "-f", "alsa", "-i", "hw:1,0", to };
					} else {
						cmd = new String[] { "/usr/local/bin/ffmpeg", "-deinterlace",
								 "-i", from, to };
					}

					try {
						while (running == true) {
							ps = Runtime.getRuntime().exec(cmd);
							BufferedReader br = new BufferedReader(
									new InputStreamReader(ps.getErrorStream()));

							String line;
							while ((line = br.readLine()) != null) {
								System.out.println(line);
							}

							ps.waitFor();
							Thread.sleep(1000);
						}

						ps = null;

					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						running = false;

						if (ps != null) {
							ps.destroy();
							ps = null;
						}
					}
				}
			});
			t.start();

			while (running == true && ps == null) {
				try {
					Thread.sleep(1000);
				} catch (InterruptedException ex) {
					ex.printStackTrace();
				}
			}
		}
	}