App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2022-12-30 82594dab993741669b50fe1ec784f528fd836bc2
Verwendung des VLCPlayer verbessert
4 files modified
1 files added
94 ■■■■ changed files
src/de/uhilger/calypso/MeldeThread.java 2 ●●●●● patch | view | raw | blame | history
src/de/uhilger/calypso/handler/BasePlayer.java 66 ●●●●● patch | view | raw | blame | history
src/de/uhilger/calypso/handler/OMXPlayer.java 11 ●●●● patch | view | raw | blame | history
src/de/uhilger/calypso/handler/PlayHandler.java 2 ●●●●● patch | view | raw | blame | history
src/de/uhilger/calypso/handler/VLCPlayer.java 13 ●●●● patch | view | raw | blame | history
src/de/uhilger/calypso/MeldeThread.java
@@ -70,6 +70,8 @@
  }
  
  private void prozessBeendetMelden() {
    logger.log(Level.FINER,
              "Alle Lauscher werden ueber beendeten Abspielprozess verstaendigt..");
    Iterator<ProzessLauscher> i = lauscher.iterator();
    while(i.hasNext()) {
      ProzessLauscher l = i.next();
src/de/uhilger/calypso/handler/BasePlayer.java
New file
@@ -0,0 +1,66 @@
package de.uhilger.calypso.handler;
import de.uhilger.calypso.App;
import static de.uhilger.calypso.handler.OMXPlayer.CMD_STOP;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author ulli
 */
public abstract class BasePlayer implements Player {
  private static final Logger logger = Logger.getLogger(BasePlayer.class.getName());
  @Override
  public void prozessBeendet(String meldeUrlStr) {
    logger.log(Level.INFO,
              "Abspielen beendet, sende Meldung an {0}.",
              new Object[]{meldeUrlStr});
    try {
      HttpURLConnection conn = (HttpURLConnection) new URL(meldeUrlStr).openConnection();
      conn.setRequestMethod("GET");
      conn.connect();
      int status = conn.getResponseCode();
      logger.log(Level.INFO,
              "Abspielen beendet, Meldung an {0} mit Statuscode {1} gesendet.",
              new Object[]{meldeUrlStr, status});
          /*
            fuer den Fall, dass ein Stopp-Signal den Player nicht erreicht
            oder dort nicht funktioniert, gibt es keine Moeglichkeit festzustellen,
            dass der Player noch spielt. Damit in einem solchen Fall der Zeiger
            auf den Abspielprozess nicht verloren geht, wird  der Zeiger nicht
            auf null gesetzt.
          */
      //App.setPlayerProcess(null);
    } catch(IOException ex) {
      logger.log(Level.INFO, ex.getMessage(), ex);
    }
  }
  @Override
  public String tilgen() {
    logger.log(Level.INFO,"Player tilgen.");
    String antwort; // = null;
    try {
      Process o = App.getPlayerProcess();
      if(o == null) {
        antwort = "Es ist kein Player zum Beenden vorhanden.";
        //App.setPlayerProcess(null);
      } else {
        kommando(CMD_STOP); // setzt den Prozess der App auf null
        antwort = "Player gestoppt.";
      }
    }
    catch(Exception ex) {
      antwort = "Fehler: " + ex.getMessage();
    }
    return antwort;
  }
}
src/de/uhilger/calypso/handler/OMXPlayer.java
@@ -27,8 +27,6 @@
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -45,7 +43,7 @@
 *
 * @author ulrich
 */
public class OMXPlayer implements Player , ProzessLauscher {
public class OMXPlayer extends BasePlayer implements Player , ProzessLauscher {
  
  private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName());
  
@@ -131,6 +129,7 @@
   *
   * @return die Antwort des Servers
   */
  /*
  @Override
  public String tilgen() {
    String antwort; // = null;
@@ -149,7 +148,7 @@
    }
    return antwort;
  }
  */
  
  /**
   * Dem laufenden Abspielprozess ein Kommando uebermitteln
@@ -202,6 +201,7 @@
  
  /* ------ Implementierung ProzessLauscher ----------------- */
  
  /*
  @Override
  public void prozessBeendet(String meldeUrlStr) {
    try {
@@ -220,9 +220,10 @@
            auf null gesetzt.
          */
      //App.setPlayerProcess(null);
  /*
    } catch(IOException ex) {
      logger.log(Level.INFO, ex.getMessage(), ex);
    }
  }
  */
}
src/de/uhilger/calypso/handler/PlayHandler.java
@@ -77,7 +77,9 @@
        //FileUtils.deleteDirectory(new File(System.getProperty("omx.wd"), "omx-logs"));
        FileSystem fs = FileSystems.getDefault();
        Path path = fs.getPath(System.getProperty("omx.wd"), "omx-logs");
        if(path.toFile().exists()) {
        deleteDirectory(path);
        }
        //Files.delete(path);
      } catch (IOException ex) {
        logger.log(Level.SEVERE, null, ex);
src/de/uhilger/calypso/handler/VLCPlayer.java
@@ -7,7 +7,6 @@
import de.uhilger.calypso.App;
import de.uhilger.calypso.MeldeThread;
import static de.uhilger.calypso.handler.OMXPlayer.BLANK;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -16,7 +15,7 @@
 *
 * @author ulrich
 */
public class VLCPlayer implements Player {
public class VLCPlayer extends BasePlayer implements Player {
  
  private static final Logger logger = Logger.getLogger(VLCPlayer.class.getName());
@@ -58,6 +57,7 @@
        
        kommando.append(urlStr);
      }
      kommando.append(" vlc://quit");
      logger.log(Level.FINE, "kommando: {0}", kommando.toString());
      Process player_process = Runtime.getRuntime().exec(kommando.toString());
      if(meldeUrlStr != null) {
@@ -90,14 +90,5 @@
    return antwort;
  }
  @Override
  public void prozessBeendet(String meldeUrlStr) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }
  @Override
  public String tilgen() {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }
  
}