App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2022-12-30 82594dab993741669b50fe1ec784f528fd836bc2
commit | author | age
cfe367 1 /*
U 2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
229976 6 package de.uhilger.calypso.handler;
cfe367 7
229976 8 import de.uhilger.calypso.App;
U 9 import de.uhilger.calypso.MeldeThread;
cfe367 10 import java.io.IOException;
U 11 import java.util.logging.Level;
12 import java.util.logging.Logger;
13
14 /**
15  *
16  * @author ulrich
17  */
82594d 18 public class VLCPlayer extends BasePlayer implements Player {
cfe367 19   
U 20   private static final Logger logger = Logger.getLogger(VLCPlayer.class.getName());
21
22   @Override
23   public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) {
24     String antwort;// = null;
25     try {
26       //Object o = t.getAttribute(App.PI_PLAYER);
27       Process o = App.getPlayerProcess();
28       if(o != null) {
29         tilgen();        
30       }
31       StringBuilder kommando = new StringBuilder("vlc --fullscreen ");
32       /*
33       if(parameter != null) {
34         kommando.append(parameter);
35         kommando.append(BLANK);
36       }
37       */
38       if(urlStr.startsWith("http")) {
39         kommando.append(urlStr.replace(" ", "%20"));
40         kommando.append("?t=");
41         kommando.append(token);
42       } else {
43         /*
44           //url z.B.: Filme/H/HEAT_D2.m4v
45         
46           hier muss noch der Pfad hinzugefuegt werden, unter 
47           dem auf dem raspi die Datenquelle via NFS eingebunden ist,
48           z.B. /media/mc/
49           dieser Teil des Pfades muss in pirc als Init-Parameter oder 
50           etwas aehnliches hinterlegt sein, weil es lokal zum jeweils 
51           verwendeten raspi gehoert
52   
53         */
54         
55         String pfad = App.getInitParameter("nfs-prefix");
56         kommando.append(pfad);
57         
58         kommando.append(urlStr);
59       }
82594d 60       kommando.append(" vlc://quit");
cfe367 61       logger.log(Level.FINE, "kommando: {0}", kommando.toString());
U 62       Process player_process = Runtime.getRuntime().exec(kommando.toString());
63       if(meldeUrlStr != null) {
64         MeldeThread mt = new MeldeThread();
65         mt.setProcess(player_process);
66         mt.lauscherHinzufuegen(this);
67         mt.setMeldeUrl(meldeUrlStr);
68         mt.start();
69       }
70       //servletContext.setAttribute(App.PI_PLAYER, player_process);
71       //t.setAttribute(App.PI_PLAYER, player_process);
72       App.setPlayerProcess(player_process);
73       //Runtime.getRuntime().exec("killall dbus-daemon");
74       antwort = "Abspielen gestartet, url: " + urlStr;
75     }
76     catch(IOException ex) {
77       antwort = "Fehler: " + ex.getMessage();
78     }
79     return antwort;
80   }
81
82   @Override
83   public String kommando(String k) {
84     if(k.equalsIgnoreCase(OMXPlayer.CMD_STOP)) {
85       Process p = App.getPlayerProcess();
86       p.destroy();
87       App.setPlayerProcess(null);
88     }
89     String antwort = "Kommando '" + k + "' ausgefuehrt.";
90     return antwort;
91   }
92
93
94 }