From 7a79ba8b70e8541b6d4413a46061b2c03ecddc9b Mon Sep 17 00:00:00 2001
From: undisclosed
Date: Tue, 03 Jan 2023 10:47:17 +0000
Subject: [PATCH] Baustelle: Versuche mit unterschiedlichen Playern
---
src/de/uhilger/calypso/App.java | 5 +
src/de/uhilger/calypso/Server.java | 11 +++
src/de/uhilger/calypso/handler/MPlayHandler.java | 27 +++++++++
src/de/uhilger/calypso/handler/MPlayer.java | 88 +++++++++++++++++++++++++++++
src/de/uhilger/calypso/handler/VLCPlayer.java | 2
src/de/uhilger/calypso/handler/PlayHandler.java | 2
6 files changed, 132 insertions(+), 3 deletions(-)
diff --git a/src/de/uhilger/calypso/App.java b/src/de/uhilger/calypso/App.java
index 92111cb..48307cb 100644
--- a/src/de/uhilger/calypso/App.java
+++ b/src/de/uhilger/calypso/App.java
@@ -18,6 +18,7 @@
package de.uhilger.calypso;
+import de.uhilger.calypso.handler.MPlayer;
import de.uhilger.calypso.handler.OMXPlayer;
import de.uhilger.calypso.handler.Player;
import de.uhilger.calypso.handler.VLCPlayer;
@@ -57,6 +58,7 @@
public static final String IP_PLAYER = "player";
public static final String VLC_PLAYER = "vlc";
public static final String OMX_PLAYER = "omx";
+ public static final String M_PLAYER = "mpl";
public static final String OMX_WD = "omx.wd";
public static final String CTX = "ctx";
@@ -78,6 +80,9 @@
String playerType = getInitParameter(IP_PLAYER);
switch(playerType) {
+ case M_PLAYER:
+ player = new MPlayer();
+ break;
case VLC_PLAYER:
player = new VLCPlayer();
break;
diff --git a/src/de/uhilger/calypso/Server.java b/src/de/uhilger/calypso/Server.java
index df18287..1c01d35 100644
--- a/src/de/uhilger/calypso/Server.java
+++ b/src/de/uhilger/calypso/Server.java
@@ -23,6 +23,8 @@
import de.uhilger.calypso.handler.DBusHandler;
import de.uhilger.calypso.handler.FileHandler;
import de.uhilger.calypso.handler.LogHandler;
+import de.uhilger.calypso.handler.MPlayHandler;
+import de.uhilger.calypso.handler.MPlayer;
import de.uhilger.calypso.handler.OMXPlayer;
import de.uhilger.calypso.handler.PingHandler;
import de.uhilger.calypso.handler.PlayHandler;
@@ -93,8 +95,9 @@
logger.log(Level.INFO, "Server starting on port {0}", port);
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
- server.createContext(contextName + "/play", new PlayHandler(BasePlayer.F_PLAY));
+
if (playerType.equals(App.OMX_PLAYER)) {
+ server.createContext(contextName + "/play", new PlayHandler(BasePlayer.F_PLAY));
server.createContext(contextName + "/seek", new SeekHandler(OMXPlayer.F_SEEK));
server.createContext(contextName + "/stop", new CmdHandler(OMXPlayer.CMD_STOP));
server.createContext(contextName + "/pause", new CmdHandler(OMXPlayer.CMD_PAUSE_RESUME));
@@ -104,10 +107,16 @@
server.createContext(contextName + "/log", new LogHandler());
server.createContext(contextName + "/playon", new PlayOnHandler(OMXPlayer.F_PLAY_ON));
} else if (playerType.equals(App.VLC_PLAYER)) {
+ server.createContext(contextName + "/play", new PlayHandler(BasePlayer.F_PLAY));
server.createContext(contextName + "/pause", new DBusHandler(VLCPlayer.CMD_PAUSE_RESUME));
+ //server.createContext(contextName + "/pause", new CmdHandler("pause"));
//server.createContext(contextName + "/seek", new DBusHandler(VLCPlayer.CMD_SEEK));
server.createContext(contextName + "/seek", new VLCSeekHandler(VLCPlayer.CMD_SEEK));
server.createContext(contextName + "/stop", new VLCKillHandler());
+ } else if (playerType.equals(App.M_PLAYER)) {
+ server.createContext(contextName + "/play", new MPlayHandler());
+ server.createContext(contextName + "/pause", new CmdHandler(MPlayer.CMD_PAUSE_RESUME));
+ server.createContext(contextName + "/stop", new CmdHandler(MPlayer.CMD_STOP));
}
server.createContext(contextName + "/ui", new FileHandler(App.getInitParameter(App.IP_WWW_DATA)));
server.createContext(contextName + "/ping", new PingHandler(BasePlayer.F_PING));
diff --git a/src/de/uhilger/calypso/handler/MPlayHandler.java b/src/de/uhilger/calypso/handler/MPlayHandler.java
new file mode 100644
index 0000000..7ccb685
--- /dev/null
+++ b/src/de/uhilger/calypso/handler/MPlayHandler.java
@@ -0,0 +1,27 @@
+package de.uhilger.calypso.handler;
+
+import com.sun.net.httpserver.HttpExchange;
+import de.uhilger.calypso.App;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author Ulrich Hilger
+ */
+public class MPlayHandler extends AbstractHandler {
+
+ private static final Logger logger = Logger.getLogger(MPlayHandler.class.getName());
+
+ @Override
+ protected String process(HttpExchange t, String params) {
+ Player player = App.getPlayer();
+ String antwort = player.abspielen(
+ player.getParam(map, "titel"), params, player.getParam(map, "r"), "1");
+ logger.log(Level.FINE, antwort);
+ return antwort;
+ }
+
+
+
+}
diff --git a/src/de/uhilger/calypso/handler/MPlayer.java b/src/de/uhilger/calypso/handler/MPlayer.java
new file mode 100644
index 0000000..6539233
--- /dev/null
+++ b/src/de/uhilger/calypso/handler/MPlayer.java
@@ -0,0 +1,88 @@
+package de.uhilger.calypso.handler;
+
+import com.sun.net.httpserver.HttpExchange;
+import de.uhilger.calypso.App;
+import de.uhilger.calypso.MeldeThread;
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author Ulrich Hilger
+ */
+public class MPlayer extends BasePlayer {
+
+ private static final Logger logger = Logger.getLogger(MPlayer.class.getName());
+
+ public static final String CMD_STOP = "q";
+ public static final String CMD_PAUSE_RESUME = "p";
+
+ @Override
+ public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) {
+ String antwort;// = null;
+ try {
+ //Object o = t.getAttribute(App.PI_PLAYER);
+ Process o = App.getPlayerProcess();
+ if(o != null) {
+ tilgen();
+ }
+ StringBuilder kommando = new StringBuilder("mplayer -cache 2048 -cache-min 80 -really-quiet -framedrop ");
+ /*
+ if(parameter != null) {
+ kommando.append(parameter);
+ kommando.append(BLANK);
+ }
+ */
+ if(urlStr.startsWith("http")) {
+ kommando.append(urlStr.replace(" ", "%20"));
+ //kommando.append("?t=");
+ //kommando.append(token);
+ } else {
+ /*
+ //url z.B.: Filme/H/HEAT_D2.m4v
+
+ hier muss noch der Pfad hinzugefuegt werden, unter
+ dem auf dem raspi die Datenquelle via NFS eingebunden ist,
+ z.B. /media/mc/
+ dieser Teil des Pfades muss in pirc als Init-Parameter oder
+ etwas aehnliches hinterlegt sein, weil es lokal zum jeweils
+ verwendeten raspi gehoert
+
+ */
+
+ String pfad = App.getInitParameter("nfs-prefix");
+ kommando.append(pfad);
+
+ kommando.append(urlStr);
+ }
+ //kommando.append(" vlc://quit");
+ //kommando.append(" >>/dev/null 2>&1");
+ logger.log(Level.FINE, "kommando: {0}", kommando.toString());
+ Process player_process = Runtime.getRuntime().exec(kommando.toString());
+ if(meldeUrlStr != null) {
+ MeldeThread mt = new MeldeThread();
+ mt.setProcess(player_process);
+ mt.lauscherHinzufuegen(this);
+ mt.setMeldeUrl(meldeUrlStr);
+ mt.start();
+ }
+ //servletContext.setAttribute(App.PI_PLAYER, player_process);
+ //t.setAttribute(App.PI_PLAYER, player_process);
+ App.setPlayerProcess(player_process);
+ //Runtime.getRuntime().exec("killall dbus-daemon");
+ antwort = "Abspielen gestartet, url: " + urlStr;
+ }
+ catch(IOException ex) {
+ antwort = "Fehler: " + ex.getMessage();
+ }
+ return antwort;
+ }
+
+ @Override
+ public StringBuilder buildParams(HttpExchange t, Map m) {
+ return new StringBuilder();
+ }
+
+}
diff --git a/src/de/uhilger/calypso/handler/PlayHandler.java b/src/de/uhilger/calypso/handler/PlayHandler.java
index 86b99b4..7b09208 100644
--- a/src/de/uhilger/calypso/handler/PlayHandler.java
+++ b/src/de/uhilger/calypso/handler/PlayHandler.java
@@ -83,7 +83,7 @@
@Override
protected String process(HttpExchange t, String params) {
- if (cmd.equalsIgnoreCase(OMXPlayer.F_PLAY)) {
+ if (cmd.equalsIgnoreCase(BasePlayer.F_PLAY)) {
try {
//FileUtils.deleteDirectory(new File(System.getProperty("omx.wd"), "omx-logs"));
FileSystem fs = FileSystems.getDefault();
diff --git a/src/de/uhilger/calypso/handler/VLCPlayer.java b/src/de/uhilger/calypso/handler/VLCPlayer.java
index c2c1aba..1fac570 100644
--- a/src/de/uhilger/calypso/handler/VLCPlayer.java
+++ b/src/de/uhilger/calypso/handler/VLCPlayer.java
@@ -31,7 +31,7 @@
if(o != null) {
tilgen();
}
- StringBuilder kommando = new StringBuilder("vlc --fullscreen ");
+ StringBuilder kommando = new StringBuilder("vlc --fullscreen -I rc ");
/*
if(parameter != null) {
kommando.append(parameter);
--
Gitblit v1.9.3