import java.io.*; public class MPlayerTV { private static boolean firstPlay = true; private static OutputStreamWriter out; public static void main(String[] args) throws Exception { String[] cmd = new String[] { "mplayer.exe", "-quiet", "-identify", "-slave", "-loop", "0", "stream.dump" }; Process p = Runtime.getRuntime().exec(cmd); (new MiniLogger(p.getErrorStream(), true)).start(); (new MiniLogger(p.getInputStream(), false)).start(); out = new OutputStreamWriter(p.getOutputStream()); } private static class MiniLogger extends Thread { private BufferedReader br; private boolean isError; public MiniLogger(InputStream is, boolean isError) { br = new BufferedReader(new InputStreamReader(is)); this.isError = isError; } public void run() { try { for(String s=br.readLine(); s != null; s=br.readLine()) { if(isError) { System.err.println(s); } else { System.out.println("read: " + s); if(s.startsWith("ID_LENGTH=")) { if(firstPlay) { firstPlay = false; } else { float length = Float.parseFloat(s.substring(10)) - 3; String cmd = "seek " + length + " 2"; out.write(cmd); out.write("\n"); out.flush(); System.out.println("sent: " + cmd); } } } } } catch(Exception ex) { ex.printStackTrace(); } } } }