Причина, по которой это не работает, заключается в том, что MPlayer выводит много материала в терминал, и как только его вывод достигает 4096 байт (ограничение буфера канала в Linux), процесс зависает на следующем printf, пока некоторые данные не будут считаны другая сторона трубы. И в вашем случае он зависает навсегда, поскольку вы не читаете стандартный вывод и потоки ошибок.
Чтобы обойти это, вы можете просто закрыть эти потоки, как только запустите процесс:
Process p = Runtime.getRuntime().exec(“D:\mencoder\mnc\mencoder.exe video1.avi -o outvideo1.flv -of lavf -oac mp3lame -lameopts abr:br=64 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=300:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=320:240,harddup -quiet”) ;
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();