Mplayer GUI Javaban (exec probléma)
2008-03-28T09:36:32+01:00
2008-03-28T21:36:28+01:00
2022-07-29T03:00:30+02:00
wiggen
Sziasztok!

Javaban kezdtem írni egy interfészt Mplayer-hez, Windows alatt. A probléma a következő: mikor futtatni akarom az mplayert a programból, nem índítja el a videot. Ha mp3-at játszok le vele, a háttérben elindul, de semmit nem látni belőle, csak a filekezelőben látszik a folyamat.

Process p = Runtime.getRuntime().exec("mplayer.exe "+playlist.get(kivalasztott).getAbsolutePath());
Így akarom futtatni. Ha az mplayer helyett notepadot írok simán megnyitja azt a szutykot. Nem értem mi lehet a gondja
Mutasd a teljes hozzászólást!
Azt hiszem, rajottem, mi lehet a gond. Az mplayer folyamatosan ir a kimenetere, amit a java automatikusan rakot egy inputstreamre, ami raadasul bufferelt. Igy, miutan ezt nem olvasod/flusholod rendszeresen, eleg hamar betelik a buffere, es ha ezutan probal az mplayer a kimenetere, az is blokkolodni fog.

Probald meg close()-olni a process.getInputStream-et es a process.getErrorStreamet, vagy ha nem megy, indits 1 szalat, ami ezt folyamatosan olvassa.
Mutasd a teljes hozzászólást!

  • És ha az egészet idézőjelbe rakod?

    String command = command = "mplayer.exe \"" + playlist.get(kivalasztott).getAbsolutePath() + "\""; Process p = Runtime.getRuntime().exec(command);

    Ha kiiratod a commandot így fog kinézni:
    mplayer.exe "C:\akarmi.avi"

    Talán így menni fog.
    Mutasd a teljes hozzászólást!
  • 1) Ha van szóköz a fájlnévben, akkor idézőjelbe kell rakni.
    2) Mplayer benn van path-ban, vagy valami olyan helyen, ahol biztosan látja a programod?

    Üdv: PT
    Mutasd a teljes hozzászólást!
  • Igy is megprobalhatod:

    Process p = Runtime.getRuntime().exec(new String [] {"mplayer.exe", playlist.get(kivalasztott).getAbsolutePath()});
    Mutasd a teljes hozzászólást!
  • Véletlenül benn marad egy "commmand =" a hsz.-emben így helyes:

    String command = "mplayer.exe \"" + playlist.get(kivalasztott).getAbsolutePath() + "\""; Process p = Runtime.getRuntime().exec(command);

    Egyébként idézőjel akkor is kell ha valamilyen spec karater is van a könyvtár vagy fájl nevében (pl.: '=',stb...).
    Mutasd a teljes hozzászólást!
  • Már azt is kipróbáltam, nem megy úgy se.
    Persze benne van path-ban az elérési út.
    A String[] megoldást is próbáltam.
    Valószinű, hogy az lesz a baj, hogy nem külön szálként futtatom le a parancsot. Azt gondoltam, hogy nem kell ebben az esetben a külön szál, de lehet tévedtem. Este tudom csak megnézni, mert most nem leszek gépközelben. Majd beszámolok az eredményről.
    Mutasd a teljes hozzászólást!
  • Biztos, hogy nem kell kulon szal. Az lehet a baj, hogy az mplayer.exe nem jo helyen van. Az is lehet, hogy a playlist.get(kivalasztott).getAbsolutePath() ad vissza rosszat, irasd ki system.out-ra az exec elott.
    Mutasd a teljes hozzászólást!
  • Kiírattam, de jó a parancs, simán beírva lefut.
    String[] command = new String[]{"mplayer.exe ", "\"" + playlist.get(kivalasztott).getAbsolutePath() + "\""}; Process p = Runtime.getRuntime().exec(command);
    Jelenleg eddig jutottam. Ezt hajtja végre egy gomb lenyomására. De a lejátszás nem indul el :( Viszont, mikor bezárom a programomat, akkor elindul a lejátszás. Nem értem mi a csuda lehet a baja. Átolvasva a Process osztály doksiját talán az input/output buffert kellene bufferelni, mert nem használ konzolt, hanem std outputot, inputot használja Mellesleg kedvesek, hogy odaírják, hogy néhány processnél talán nem működik jól az osztály MS Windows alatt , de ez engem nem boldogít.
    Mutasd a teljes hozzászólást!
  • Azt hiszem, rajottem, mi lehet a gond. Az mplayer folyamatosan ir a kimenetere, amit a java automatikusan rakot egy inputstreamre, ami raadasul bufferelt. Igy, miutan ezt nem olvasod/flusholod rendszeresen, eleg hamar betelik a buffere, es ha ezutan probal az mplayer a kimenetere, az is blokkolodni fog.

    Probald meg close()-olni a process.getInputStream-et es a process.getErrorStreamet, vagy ha nem megy, indits 1 szalat, ami ezt folyamatosan olvassa.
    Mutasd a teljes hozzászólást!
  • Ott a pont. Bezártam a streameket és ment ahogy kell neki. De már én is jó fele kapisgáltam :)
    Mutasd a teljes hozzászólást!
abcd