Por que o stdin / stdout está falhando com o gplay no Ubuntu?

0

Estou tentando alterar o nível de volume do programa de maneira programática em um aplicativo Java. O vídeo toca bem; Eu vejo o menu do jogo; Eu recebo meu primeiro prompt de "Reprodução" e escrevo um "v" para "[v] Volume", mas nunca vejo o prompt de volume "Definir volume". Eu recebo todos os dados que eu esperava do BufferedReader, mas BufferedWriter não parece estar funcionando. Tudo funciona como esperado quando eu executo o console. Alguém pode ver o que estou fazendo errado?

Obrigado.

List<String> command = new ArrayList<String>();
command.add("gplay");
command.add("demoVideo.mp4");

ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File("/home/ubuntu"));
builder.redirectErrorStream(true);

Process playVideoProcess = builder.start();

// get the input stream connected to the normal output of the subprocess
InputStream is = playVideoProcess.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

// get the output stream connected to the normal input of the subprocess
OutputStream os = playVideoProcess.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);

while (true)
{
    line = br.readLine();
    if (line != null)
    {
        if (debug) logger.log(Level.INFO, "--> " + line);

        if (line.contains("[Playing  ][Vol=01]"))
        {
            bw.write("v");
            bw.newLine();
            bw.flush();
        }
        else if (line.contains("Set volume"))
        {
            bw.write("10");
            bw.newLine();
            bw.flush();
        }
        else if (line.contains("[Playing  ][Vol=10]"))
        {
            logger.log(Level.INFO, "* Done. CLOSING ALL STREAMS *");
            bw.close();
            osw.close();
            os.close();

            br.close();
            isr.close();
            is.close();
            break;
        }
    }
}
    
por JimB 26.02.2016 / 23:51

1 resposta

0

Obrigado, Serg - é um reprodutor de mídia de streaming da Freescale Semiconductor. Aqui está um link para o manual em PDF:

link

    
por JimB 27.02.2016 / 15:24