Servus,
habe hier gerade ein Stück Code, das die Executable des LAME-Encoders (das ist ein mp3-Encoder) aufruft, Parameter übergibt und vom "Process" dann den stdin und stdout gettet (als Input- bzw. OutputStream-Objekt).
Ich habe bisher von LAME per SWIG eine Java-Anbindung generieren lassen, sodaß ich keine Executable, sondern direkt die DLL von Java aus aufrufe. Dazu habe ich dennoch ganz einfach die main()-Methode von LAME von außen aufrufbar gemacht, und ich rufe sie mit denselben Parametern auf wie wenn ich die Executable starten würde.
Allerdings würde ich nun trotzdem auch gerne mit Streams arbeiten, LAME allerdings weiterhin als DLL und nicht als Executable einbinden. Gibt es dafür eine Möglichkeit? Für mich ist das ja nun ein JNI-Methoden-Aufruf - aber kann ich da trotzdem irgendwie den stdin und stdout umleiten, um ihn selbst zu füllen und auszulesen?
(Natürlich könnte ich direkt bestimmte LAME-Funktionen aufrufen, aber müßte mir dann die ganzen Schleifen usw. selbst bauen. Bequemer würde es eben über die Kommandozeilenparameter gehen, daher wäre das schon praktisch, da LAME die Streams eh schon unterstützt. Daher wär's mir lieber, wenn es hierfür eine Lösung gäbe)
habe hier gerade ein Stück Code, das die Executable des LAME-Encoders (das ist ein mp3-Encoder) aufruft, Parameter übergibt und vom "Process" dann den stdin und stdout gettet (als Input- bzw. OutputStream-Objekt).
Ich habe bisher von LAME per SWIG eine Java-Anbindung generieren lassen, sodaß ich keine Executable, sondern direkt die DLL von Java aus aufrufe. Dazu habe ich dennoch ganz einfach die main()-Methode von LAME von außen aufrufbar gemacht, und ich rufe sie mit denselben Parametern auf wie wenn ich die Executable starten würde.
Allerdings würde ich nun trotzdem auch gerne mit Streams arbeiten, LAME allerdings weiterhin als DLL und nicht als Executable einbinden. Gibt es dafür eine Möglichkeit? Für mich ist das ja nun ein JNI-Methoden-Aufruf - aber kann ich da trotzdem irgendwie den stdin und stdout umleiten, um ihn selbst zu füllen und auszulesen?
(Natürlich könnte ich direkt bestimmte LAME-Funktionen aufrufen, aber müßte mir dann die ganzen Schleifen usw. selbst bauen. Bequemer würde es eben über die Kommandozeilenparameter gehen, daher wäre das schon praktisch, da LAME die Streams eh schon unterstützt. Daher wär's mir lieber, wenn es hierfür eine Lösung gäbe)