App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2023-01-07 2f2aa7d344d41c6d4083149b1ea6b41e7fb1f683
commit | author | age
098eef 1 package de.uhilger.calypso.handler;
U 2
3 import com.sun.net.httpserver.HttpExchange;
4 import java.io.IOException;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7
8 /**
9  * Hier muss noch die Implementierung mit Unix Domain Sockets folgen,
10  * sobald Java 16 fuer 64-bit Raspberry Pi 4 erhaeltlich ist.
11  * 
12  * Bis dahin wird hier (dirty trick) ein Shell Skript aufgerufen, 
13  * das mit Hilfe des Tools socat das Kommando ausfuehrt. socat muss 
14  * dafuer auf dem Raspberry Pi installiert sein.
15  * 
16  * Kommandos
17  * 
18  * pause: echo '{"command": ["cycle", "pause"]}' | socat - /tmp/mpvsocket
19  * seek: echo '{"command": ["seek", '30']}' | socat - /tmp/mpvsocket
20  * 
21  * @author Ulrich Hilger
22  */
23 public class SocketHandler extends CmdHandler {
24   
25   private static final Logger logger = Logger.getLogger(SocketHandler.class.getName());
26
27   public SocketHandler(String cmd) {
28     super(cmd);
29   }
30
31   @Override
32   protected String process(HttpExchange t, String params) {
33       String antwort;// = null;
34     try {
35       StringBuilder kommando = new StringBuilder();
36       kommando.append(MPVPlayer.SOCK_PREFIX);
37       kommando.append(cmd);
38       logger.log(Level.FINE, "kommando: {0}", kommando.toString());
39       Process player_process = Runtime.getRuntime().exec(kommando.toString());
40       antwort = "Kommando ausgefuehrt: " + kommando;
41     } catch (IOException ex) {
42       antwort = "Fehler: " + ex.getMessage();
43     }
44     return antwort;
45   }
46 }