App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2022-12-31 b16b544a3982da609564491ac207e74c0e121c25
commit | author | age
82594d 1 package de.uhilger.calypso.handler;
U 2
3 import de.uhilger.calypso.App;
4 import static de.uhilger.calypso.handler.OMXPlayer.CMD_STOP;
b16b54 5 import java.io.BufferedWriter;
82594d 6 import java.io.IOException;
b16b54 7 import java.io.OutputStream;
U 8 import java.io.OutputStreamWriter;
9 import java.io.Writer;
82594d 10 import java.net.HttpURLConnection;
U 11 import java.net.URL;
b16b54 12 import java.util.Map;
82594d 13 import java.util.logging.Level;
U 14 import java.util.logging.Logger;
15
16 /**
17  *
18  * @author ulli
19  */
20 public abstract class BasePlayer implements Player {
21   
22   private static final Logger logger = Logger.getLogger(BasePlayer.class.getName());
23   
b16b54 24   public static final String F_PLAY = "play";
U 25   public static final String F_PING = "ping";
26
82594d 27   
U 28   @Override
29   public void prozessBeendet(String meldeUrlStr) {
30     logger.log(Level.INFO, 
31               "Abspielen beendet, sende Meldung an {0}.", 
32               new Object[]{meldeUrlStr});
33     try {
34       HttpURLConnection conn = (HttpURLConnection) new URL(meldeUrlStr).openConnection();
35       conn.setRequestMethod("GET");
36       conn.connect();
37       int status = conn.getResponseCode();
38       logger.log(Level.INFO, 
39               "Abspielen beendet, Meldung an {0} mit Statuscode {1} gesendet.", 
40               new Object[]{meldeUrlStr, status});
41           /*
42             fuer den Fall, dass ein Stopp-Signal den Player nicht erreicht 
43             oder dort nicht funktioniert, gibt es keine Moeglichkeit festzustellen,
44             dass der Player noch spielt. Damit in einem solchen Fall der Zeiger 
45             auf den Abspielprozess nicht verloren geht, wird  der Zeiger nicht 
46             auf null gesetzt.
47           */
48       //App.setPlayerProcess(null);
49     } catch(IOException ex) {
50       logger.log(Level.INFO, ex.getMessage(), ex);
51     }
52   }
53
54   @Override
55   public String tilgen() {
56     logger.log(Level.INFO,"Player tilgen.");
57     String antwort; // = null;
58     try {
59       Process o = App.getPlayerProcess();
60       if(o == null) {
61         antwort = "Es ist kein Player zum Beenden vorhanden.";
62         //App.setPlayerProcess(null);
63       } else {
64         kommando(CMD_STOP); // setzt den Prozess der App auf null
65         antwort = "Player gestoppt.";
66       }
67     } 
68     catch(Exception ex) {
69       antwort = "Fehler: " + ex.getMessage();
70     }
71     return antwort;
72   }
b16b54 73
U 74     public String getParam(Map map, String key) {
75     Object o = map.get(key);
76     if(o != null) {
77       return o.toString();
78     } else {
79       return null;
80     }
81   }
82   
83   /**
84    * Dem laufenden Abspielprozess ein Kommando uebermitteln
85    * @param k  das Kommando laut 
86    * <a href="https://github.com/huceke/omxplayer/blob/master/README.md" target="_blank">Liste der Kommandos</a>
87    * @return die Antwort des Servers
88    */
89   @Override
90   public String kommando(String k) {
91     String antwort; // = null;
92     try {
93       //Object o = t.getAttribute(App.PI_PLAYER);
94       Process o = App.getPlayerProcess();
95       if(o == null) {
96         //App.setPlayerProcess(null);
97         //servletContext.removeAttribute(PI_PLAYER);
98         //t.setAttribute(App.PI_PLAYER, null);
99         antwort = "Es wird nichts abgespielt dem ein Kommando gesendet werden kann.";
100       } else {
101         Process player_process = o;
102         OutputStream os = player_process.getOutputStream();
103         Writer out = new BufferedWriter(new OutputStreamWriter(os));
104         out.write(k);
105         out.flush();
106         antwort = "Kommando '" + k + "' ausgefuehrt.";
107       }
108     } 
109     catch(IOException ex) {
110       antwort = "Fehler: " + ex.getMessage();
111     }
112     return antwort;
113   }
114
82594d 115 }