| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | } |
| | | 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; |