src/de/uhilger/calypso/App.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/calypso/Server.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/calypso/handler/VLCPlayer.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/calypso/handler/VLCSeekHandler.java | ●●●●● patch | view | raw | blame | history |
src/de/uhilger/calypso/App.java
@@ -1,6 +1,6 @@ /* AV-Direktor - Control OMXPlayer on Raspberry Pi via HTTP Copyright (C) 2021 Ulrich Hilger Calypso - Media Player Remote Control via HTTP for Raspberry Pi Copyright (C) 2021-2023 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 @@ -27,19 +27,25 @@ import java.util.logging.Logger; /** * Hauptklasse des av-director * Hauptklasse von Calypso * * Aufruf mit * java -jar av-director.jar port=9000 ctx="/calypso" * java -jar av-director.jar nfs-prefix="/media/mc" port=9000 * java -Djava.util.logging.config.file=logging.properties -jar .. * Aufruf mit<br> * java -jar calypso.jar port=9000 ctx="/calypso"<br> * java -jar calypso.jar nfs-prefix="/media/mc" port=9000<br> * java -Djava.util.logging.config.file=logging.properties -jar ..<br> * * Der Parameter nfs-prefix bewirkt, dass beim Abspielen relative Pfade * mit diesem Praefix verbunden werden und setzt voraus, dass auf der * Maschine ein NFS-Mount ueber /etc/fstab eingerichtet ist. * Maschine ein NFS-Mount ueber /etc/fstab eingerichtet ist.<br> * <br> * Anmerkung anlaesslich der Aenderung auf VLC (2.1.2023):<br> * Mit Calypso wurde erstmals jdk.httpserver anstelle von Tomcat * einsetzt. Es war in diesem Punkt noch ein Laborversuch und sollte * unter Wiederverwendung der wesentlichen Teile bei Gelegenheit * neu gebaut werden. * * @author ulrich * @version 0.1, 20.03.2021 * @author Ulrich Hilger * @version 0.2 vom 2.1.2023, 0.1 vom 20.03.2021 als Nachfolger von Pirc (02.2013-03.2021) */ public class App { src/de/uhilger/calypso/Server.java
@@ -1,6 +1,6 @@ /* AV-Direktor - Control OMXPlayer on Raspberry Pi via HTTP Copyright (C) 2021 Ulrich Hilger Calypso - Media Player Remote Control via HTTP for Raspberry Pi Copyright (C) 2021-2023 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 @@ -14,7 +14,7 @@ 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.calypso; import com.sun.net.httpserver.HttpServer; @@ -39,8 +39,31 @@ import java.util.logging.Level; /** * * @author ulrich * Die Klasse Server implementiert die HTTP-Schnittstelle zum * Mediaplayer. Es wird ein Player-Prozesss fuer das Abspielen * eines Titels gestartet. Mit Stopp oder Ende des Titels endet * auch der Abspielprozess.<br> * <br> * zum Abspielen:<br> * /calypso/play?title=http://ein.titel.mp3&r=http://rueckmelde.url<br> * <br> * waehrend des Abspielens:<br> * /calypso/pause<br> * /calypso/seek?pos=[sekunden]<br> * /calypso/stop<br> * <br> * sonstige Funktionen:<br> * /calypso/ping<br> * /calypso/server/stop<br> * <br> * verworfene Funktionen<br> * /calypso/vol-inc<br> * /calypso/vol-dec<br> * Die Lautstaerke wird in aller Regel am Geraet geregelt, an das der * Zuspieler (der Raspi) angeschlossen ist. Eine Regelung ueber den * Zuspieler ist daher eher selten erforderlich. * * @author Ulrich Hilger */ public class Server { src/de/uhilger/calypso/handler/VLCPlayer.java
@@ -1,8 +1,3 @@ /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package de.uhilger.calypso.handler; import com.sun.net.httpserver.HttpExchange; @@ -25,6 +20,7 @@ public static final String DBUS_PREFIX = "dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player."; public static final String CMD_PAUSE_RESUME = "PlayPause"; public static final String CMD_SEEK = "Seek"; public static final String CMD_VOLUME = "Volume"; @Override public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) { src/de/uhilger/calypso/handler/VLCSeekHandler.java
@@ -1,7 +1,3 @@ /* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package de.uhilger.calypso.handler; import com.sun.net.httpserver.HttpExchange; @@ -11,21 +7,22 @@ import java.util.logging.Logger; /** * dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek int64:-5000000 * * dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 * org.mpris.MediaPlayer2.Player.Seek int64:-5000000 * * @author Ulrich Hilger */ public class VLCSeekHandler extends CmdHandler { private static final Logger logger = Logger.getLogger(VLCSeekHandler.class.getName()); public VLCSeekHandler(String cmd) { super(cmd); } @Override protected String process(HttpExchange t, String params) { String antwort;// = null; String antwort;// = null; try { StringBuilder kommando = new StringBuilder(); kommando.append(VLCPlayer.DBUS_PREFIX); @@ -39,23 +36,23 @@ } return antwort; } @Override protected StringBuilder buildParams(HttpExchange t) { Player player = App.getPlayer(); StringBuilder params = super.buildParams(t); if(player instanceof VLCPlayer) { if (player instanceof VLCPlayer) { String pos = player.getParam(map, "pos"); if(!pos.isEmpty()) { if (!pos.isEmpty()) { params.append(" "); params.append("int64:"); params.append(pos); params.append("000000"); // Mikrosekunden } } logger.log(Level.FINER, "params: " + params.toString()); return params; } } }