From fa4bcf5f03a8b2fc45faa1aef8f0c8ff4dd616b6 Mon Sep 17 00:00:00 2001
From: ulrich <ulrich@ulrich-vaio>
Date: Mon, 29 Mar 2021 19:49:19 +0000
Subject: [PATCH] VLCPlayer Pause Seek in Arbeit
---
src/de/uhilger/avdirektor/handler/OMXPlayer.java | 117 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 61 insertions(+), 56 deletions(-)
diff --git a/src/de/uhilger/avdirektor/handler/OMXPlayer.java b/src/de/uhilger/avdirektor/handler/OMXPlayer.java
index 33cb7bc..991e12b 100644
--- a/src/de/uhilger/avdirektor/handler/OMXPlayer.java
+++ b/src/de/uhilger/avdirektor/handler/OMXPlayer.java
@@ -1,6 +1,23 @@
+/*
+ AV-Direktor - Control OMXPlayer on Raspberry Pi via HTTP
+ Copyright (C) 2021 Ulrich Hilger
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
package de.uhilger.avdirektor.handler;
-import com.sun.net.httpserver.HttpExchange;
import de.uhilger.avdirektor.App;
import de.uhilger.avdirektor.MeldeThread;
import de.uhilger.avdirektor.ProzessLauscher;
@@ -11,9 +28,6 @@
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -27,23 +41,56 @@
*
* @author ulrich
*/
-public abstract class OMXPlayer implements ProzessLauscher {
+public class OMXPlayer implements Player , ProzessLauscher {
private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName());
+ public static final String BLANK = " ";
+ public static final String CMD_DEC_SPEED = "1";
+ public static final String CMD_DEC_VOL = "-";
+ public static final String CMD_INC_SPEED = "2";
+ public static final String CMD_INC_VOL = "+";
+ public static final String CMD_NEXT_AUDIO = "k";
+ public static final String CMD_NEXT_CHAPTER = "o";
+ public static final String CMD_NEXT_SUB = "m";
+ public static final String CMD_PAUSE_RESUME = "p";
+ public static final String CMD_PREV_AUDIO = "j";
+ public static final String CMD_PREV_CHAPTER = "i";
+ public static final String CMD_PREV_SUB = "n";
+ public static final String CMD_STOP = "q";
+ public static final String CMD_TOGGLE_SUB = "s";
+ public static final String F_PING = "ping";
+ public static final String F_PLAY = "play";
+ public static final String F_SEEK = "seek";
+ public static final String OPT_HDMI_AUDIO = "-o%20hdmi";
+ public static final String OPT_LOCAL_AUDIO = "-o%20local";
+ public static final String PFEIL_HERAUF = "5b41";
+ public static final String PFEIL_HERUNTER = "5b42";
+ public static final String PFEIL_LINKS = "5b44";
+ public static final String PFEIL_RECHTS = "5b43";
+ public static final String SP_RUECK_30 = "rueck30";
+ public static final String SP_RUECK_600 = "rueck600";
+ public static final String SP_VOR_30 = "rueck30";
+ public static final String SP_VOR_600 = "vor600";
+
+
/**
* Einen Prozess zum Abspielen mit dem omxplayer starten
* @param urlStr URL der Quelle, die abgespielt werden soll
* @param token
* @return Antwort des Servers
*/
+ /*
public String abspielen(String urlStr, String token) {
return abspielenMitParametern(urlStr, null, token);
}
+ */
+ /*
public String abspielenMitRueckmeldung(String urlStr, String meldeUrlStr, String token) {
return abspielenMitParameternUndRueckmeldung(urlStr, null, meldeUrlStr, token);
}
+ */
/**
* Einen Prozess zum Abspielen mit dem omxplayer starten
@@ -57,11 +104,14 @@
* @param token
* @return Antwort des Servers
*/
+ /*
public String abspielenMitParametern(String urlStr, String parameter, String token) {
return abspielenMitParameternUndRueckmeldung(urlStr, parameter, null, token);
}
+ */
- public String abspielenMitParameternUndRueckmeldung(String urlStr, String parameter, String meldeUrlStr, String token) {
+ @Override
+ public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) {
String antwort;// = null;
try {
//Object o = t.getAttribute(App.PI_PLAYER);
@@ -72,7 +122,7 @@
StringBuilder kommando = new StringBuilder("omxplayer ");
if(parameter != null) {
kommando.append(parameter);
- kommando.append(App.BLANK);
+ kommando.append(BLANK);
}
if(urlStr.startsWith("http")) {
kommando.append(urlStr.replace(" ", "%20"));
@@ -130,6 +180,7 @@
*
* @return die Antwort des Servers
*/
+ @Override
public String tilgen() {
String antwort; // = null;
try {
@@ -141,7 +192,7 @@
// t.removeAttribute(App.PI_PLAYER);
antwort = "Es ist kein Player zum Beenden vorhanden, aber der Servlet-Kontext wurde bereinigt.";
} else {
- kommando(App.CMD_STOP);
+ kommando(CMD_STOP);
//t.removeAttribute(PI_PLAYER);
antwort = "Player gestoppt, Kontext bereinigt.";
}
@@ -159,6 +210,7 @@
* <a href="https://github.com/huceke/omxplayer/blob/master/README.md" target="_blank">Liste der Kommandos</a>
* @return die Antwort des Servers
*/
+ @Override
public String kommando(String k) {
String antwort; // = null;
try {
@@ -175,7 +227,7 @@
Writer out = new BufferedWriter(new OutputStreamWriter(os));
out.write(k);
out.flush();
- if(k.equals(App.CMD_STOP)) {
+ if(k.equals(CMD_STOP)) {
out.close();
App.setPlayerProcess(null);
//player_process.destroy();
@@ -192,53 +244,6 @@
return antwort;
}
- /* --- --- */
-
- protected String getParam(Map map, String key) {
- Object o = map.get(key);
- if(o != null) {
- return o.toString();
- } else {
- return null;
- }
- }
-
- /*
- Den Query-Teil einer URL in die Parameter zerlegen
- */
- protected Map getQueryMap(HttpExchange t) {
- HashMap map = new HashMap();
- String query = t.getRequestURI().getQuery();
- if(query != null && query.length() > 0) {
- String qParts[] = query.split("&");
- for(String qPart : qParts) {
- logger.finer("qPart: " + qPart);
- String pParts[] = qPart.split("=");
- map.put(pParts[0], pParts[1]);
- logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]);
- }
- }
- return map;
- }
-
- protected String getResponseString(Map map, String cmd, String antwort) {
- Set keys = map.keySet();
- StringBuilder buf = new StringBuilder();
- buf.append(cmd);
- buf.append(System.lineSeparator());
- keys.forEach((Object key) -> {
- buf.append("key: ");
- buf.append(key);
- buf.append(System.lineSeparator());
- buf.append("value: ");
- buf.append(map.get(key));
- buf.append(System.lineSeparator());
- //logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)});
- });
- buf.append(antwort);
- return buf.toString();
- }
-
/* ------ Implementierung ProzessLauscher ----------------- */
@Override
--
Gitblit v1.9.3