App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2023-01-01 ac496f2285d0f79b0124528edd636a732739829a
commit | author | age
b16b54 1 package de.uhilger.calypso.handler;
U 2
3 import com.sun.net.httpserver.HttpExchange;
ac496f 4 import de.uhilger.calypso.App;
b16b54 5 import java.io.IOException;
ac496f 6 import java.util.logging.Level;
U 7 import java.util.logging.Logger;
b16b54 8
U 9 /**
5d827b 10  * Obwohl ein laufendes VLC-Programm mit Tastaturbefehlen gesteuert 
U 11  * werden kann, funktioniert es nicht, dem Prozess einen Tastaturbefehl
ac496f 12  * wie z.B. S fuer Stopp ueber process.getOutputStream zu 'schreiben', 
U 13  * moeglicherweise, weil auf dem Raspberry Pi das VLC als Kommando-
14  * zeilenprogramm ohne UI laeuft. Im Augenblick gelingt nur die Steuerung 
15  * ueber dbus. Hier muss noch geprueft werden, ob das auch mit Windows und 
16  * Mac OS klappt, was aber fuer einen Einsatz auf dem Raspberry Pi 
17  * nebensaechlich ist.
5d827b 18  * 
ac496f 19  * Die Steuerung von VLC via dbus wiederum folgt dem Standard mpris 
U 20  * (Media Player Remote Interfacing Specification) von freedesktop.org, 
21  * der von zahlreichen Mediaplayern unterstuetzt wird.
5d827b 22  * 
U 23  * @author Ulrich Hilger
b16b54 24  */
U 25 public class DBusHandler extends CmdHandler {
ac496f 26   
U 27   private static final Logger logger = Logger.getLogger(DBusHandler.class.getName());
b16b54 28
U 29   public DBusHandler(String cmd) {
30     super(cmd);
31   }
32
33   @Override
34   protected String process(HttpExchange t, String params) {
35       String antwort;// = null;
36     try {
ac496f 37       StringBuilder kommando = new StringBuilder();
U 38       kommando.append(VLCPlayer.DBUS_PREFIX);
39       kommando.append(cmd);
40       logger.log(Level.FINE, "kommando: {0}", kommando.toString());
b16b54 41       Process player_process = Runtime.getRuntime().exec(kommando.toString());
U 42       antwort = "Kommando ausgefuehrt: " + kommando;
43     } catch (IOException ex) {
44       antwort = "Fehler: " + ex.getMessage();
45     }
46     return antwort;
47   }
48 }