App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-03-23 e499f84a2f4c049ba170cf028ad57d380152267e
commit | author | age
8e2038 1 package de.uhilger.avdirektor;
U 2
3 import java.io.IOException;
4 import java.util.HashMap;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7
8 /**
cc2a32 9  * Hauptklasse des av-director
U 10  * 
11  * Aufruf mit
12  * java -jar av-director.jar port=9000
13  * java -jar av-director.jar nfs-prefix="/media/mc" port=9000
14  * java -Djava.util.logging.config.file=logging.properties -jar ..
15  * 
16  * Der Parameter nfs-prefix bewirkt, dass beim Abspielen relative Pfade 
17  * mit diesem Praefix verbunden werden und setzt voraus, dass auf der 
18  * Maschine ein NFS-Mount ueber /etc/fstab eingerichtet ist.
19  * 
8e2038 20  * @author ulrich
U 21  */
22 public class App {
23   
24   private static final Logger logger = Logger.getLogger(App.class.getName());
25
26   public static final String PI_PLAYER = "pi_player";
27   //public static final String FBI_PROC = "fbi_proc";
28   
29   public static final String CMD_STOP = "q";
30   public static final String CMD_DEC_SPEED = "1";
31   public static final String CMD_INC_SPEED = "2";
32   public static final String CMD_PREV_AUDIO = "j";
33   public static final String CMD_NEXT_AUDIO = "k";
34   public static final String CMD_PREV_CHAPTER = "i";
35   public static final String CMD_NEXT_CHAPTER = "o";
36   public static final String CMD_PREV_SUB = "n";
37   public static final String CMD_NEXT_SUB = "m";
38   public static final String CMD_TOGGLE_SUB = "s";
39   public static final String CMD_PAUSE_RESUME = "p";
40   public static final String CMD_DEC_VOL = "-";
41   public static final String CMD_INC_VOL = "+";
42   
43   public static final String PFEIL_LINKS = "5b44";
44   public static final String PFEIL_RECHTS = "5b43";
45   public static final String PFEIL_HERAUF = "5b41";
46   public static final String PFEIL_HERUNTER = "5b42";
47   
48   public static final String SP_RUECK_30 = "rueck30";
49   public static final String SP_VOR_30 = "rueck30";
50   public static final String SP_VOR_600 = "vor600";
51   public static final String SP_RUECK_600 = "rueck600";  
52
53   public static final String OPT_LOCAL_AUDIO = "-o%20local";
e499f8 54   public static final String OPT_HDMI_AUDIO = "-o%20hdmi";
U 55   
56   public static final String F_PLAY = "play";
57   public static final String F_SEEK = "seek";
58   public static final String F_PING = "ping";
8e2038 59   
U 60   public static final String BLANK = " ";
61   
62   private static HashMap initParams;
63   
a7f0a1 64   private static Process playerproc;
U 65   
8e2038 66   /**
U 67    * @param args the command line arguments
68    */
69   public static void main(String[] args) {
70     initParams = new HashMap();
71     for(String arg: args) {
72       //logger.info("arg: " + arg);
73       String[] argParts = arg.split("=");
74       //logger.info(argParts[0]);
75       //logger.info(argParts[1]);
76       initParams.put(argParts[0], argParts[1]);
77     }
78     
79     
80     Server server = new Server(Integer.parseInt(getInitParameter("port")));
81     try {
82       server.start();
83     } catch (IOException ex) {
84       Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
85     }
86   }
87   
88   public static void stop() {
89     System.exit(0);
90   }
91   
92   public static String getInitParameter(String pname) {
93     String param = null;
94     Object o = initParams.get(pname);
95     if(o != null) {
96       param = o.toString();
97     }
98     return param;
99   } 
100   
a7f0a1 101   public static Process getPlayerProcess() {
U 102     return playerproc;
103   }
8e2038 104   
a7f0a1 105   public static void setPlayerProcess(Process p) {
U 106     playerproc = p;
107   }
8e2038 108 }