From d38b2158e0c48558188caa4b05fc99b24146a4eb Mon Sep 17 00:00:00 2001 From: ulrich Date: Tue, 25 Mar 2025 08:41:36 +0000 Subject: [PATCH] Option Abspielen mit Untertitel-Datei hinzugefuegt --- src/de/uhilger/calypso/actor/PlayActor.java | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/de/uhilger/calypso/actor/PlayActor.java b/src/de/uhilger/calypso/actor/PlayActor.java index 8ba4878..c9bb4cf 100644 --- a/src/de/uhilger/calypso/actor/PlayActor.java +++ b/src/de/uhilger/calypso/actor/PlayActor.java @@ -20,8 +20,8 @@ import de.uhilger.calypso.MeldeThread; import de.uhilger.calypso.Rueckmelder; -import de.uhilger.calypso.http.Server; import java.io.IOException; +import java.util.ArrayList; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,25 +44,58 @@ public class PlayActor { public Process run(Map parameter) { + Logger logger = Logger.getLogger(PlayActor.class.getName()); String meldeUrlStr = null; Object o = parameter.get("r"); if (o instanceof String) { meldeUrlStr = (String) o; } - StringBuilder kommando = new StringBuilder(); + //StringBuilder kommando = new StringBuilder(); + ArrayList<String> kommando = new ArrayList<>(); o = parameter.get("titel"); if (o instanceof String) { String titel = (String) o; - kommando.append("mpv --input-ipc-server=/tmp/mpvsocket --no-terminal --no-sub "); - if (titel.toLowerCase().endsWith(".mp3")) { - kommando.append("--vo=null "); + //kommando.append("mpv --input-ipc-server=/tmp/mpvsocket --no-terminal --no-sub "); + kommando.add("mpv"); + kommando.add("--input-ipc-server=/tmp/mpvsocket"); + kommando.add("--no-terminal"); + + /* + wenn eine Untertitel-Datei verwendet werden soll, kommt von Tango + &sub=on im Abspiel-URL zu Calypso. + + Calypso muss das umsetzen zu --sub-file=[Name des Videos mit Endung .srt], + was voraussetzt, dass die gewuenschten Untertitel auf dem Server stets + in einer Datei vorliegen, die so heisst wie das Video und die Endung .srt hat. + + Kommt von Tango der Abspiel-URL ohne den Zusatz &sub=on, muss stattdessen + die Untertitel-Anzeige von mpv ausgeschaltet werden, damit nicht unkontrolliert + irgendwelche Untertitel ausgegeben werden. Der Parameter fuer mpv lautet + dann --no-sub + */ + + if(parameter.get("sub") != null) { + StringBuilder subFileStr = new StringBuilder(); + logger.log(Level.FINEST, "titel: {0}", titel); + subFileStr.append("--sub-file="); + subFileStr.append(titel.substring(0, titel.lastIndexOf("."))); + subFileStr.append(".srt"); + kommando.add(subFileStr.toString()); + logger.log(Level.FINEST, "subFileStr: {0}", subFileStr.toString()); + } else { + kommando.add("--no-sub"); } - kommando.append(titel); - Logger.getLogger(PlayActor.class.getName()).log(Level.FINE, kommando.toString()); + if (titel.toLowerCase().endsWith(".mp3")) { + //kommando.append("--vo=null "); + kommando.add("--vo=null"); + } + //kommando.append(titel); + kommando.add(titel); + logger.log(Level.FINE, kommando.toString()); Process player_process; try { - player_process = Runtime.getRuntime().exec(kommando.toString()); + player_process = Runtime.getRuntime().exec(kommando.toArray(String[]::new)); if (meldeUrlStr != null) { MeldeThread mt = new MeldeThread(); mt.setProcess(player_process); @@ -72,7 +105,7 @@ } return player_process; } catch (IOException ex) { - Logger logger = Logger.getLogger(PlayActor.class.getName()); + logger = Logger.getLogger(PlayActor.class.getName()); logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); ex.printStackTrace(); return null; -- Gitblit v1.9.3