package de.uhilger.calypso.handler;
|
|
import com.sun.net.httpserver.HttpExchange;
|
import de.uhilger.calypso.App;
|
import de.uhilger.calypso.MeldeThread;
|
import java.io.IOException;
|
import java.util.Map;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
|
/**
|
*
|
* @author Ulrich Hilger
|
*/
|
public class MPlayer extends BasePlayer {
|
|
private static final Logger logger = Logger.getLogger(MPlayer.class.getName());
|
|
public static final String CMD_STOP = "q";
|
public static final String CMD_PAUSE_RESUME = "p";
|
|
@Override
|
public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) {
|
String antwort;// = null;
|
try {
|
//Object o = t.getAttribute(App.PI_PLAYER);
|
Process o = App.getPlayerProcess();
|
if(o != null) {
|
tilgen();
|
}
|
StringBuilder kommando = new StringBuilder("mplayer -cache 2048 -cache-min 80 -really-quiet -framedrop ");
|
/*
|
if(parameter != null) {
|
kommando.append(parameter);
|
kommando.append(BLANK);
|
}
|
*/
|
if(urlStr.startsWith("http")) {
|
kommando.append(urlStr.replace(" ", "%20"));
|
//kommando.append("?t=");
|
//kommando.append(token);
|
} else {
|
/*
|
//url z.B.: Filme/H/HEAT_D2.m4v
|
|
hier muss noch der Pfad hinzugefuegt werden, unter
|
dem auf dem raspi die Datenquelle via NFS eingebunden ist,
|
z.B. /media/mc/
|
dieser Teil des Pfades muss in pirc als Init-Parameter oder
|
etwas aehnliches hinterlegt sein, weil es lokal zum jeweils
|
verwendeten raspi gehoert
|
|
*/
|
|
String pfad = App.getInitParameter("nfs-prefix");
|
kommando.append(pfad);
|
|
kommando.append(urlStr);
|
}
|
//kommando.append(" vlc://quit");
|
//kommando.append(" >>/dev/null 2>&1");
|
logger.log(Level.FINE, "kommando: {0}", kommando.toString());
|
Process player_process = Runtime.getRuntime().exec(kommando.toString());
|
if(meldeUrlStr != null) {
|
MeldeThread mt = new MeldeThread();
|
mt.setProcess(player_process);
|
mt.lauscherHinzufuegen(this);
|
mt.setMeldeUrl(meldeUrlStr);
|
mt.start();
|
}
|
//servletContext.setAttribute(App.PI_PLAYER, player_process);
|
//t.setAttribute(App.PI_PLAYER, player_process);
|
App.setPlayerProcess(player_process);
|
//Runtime.getRuntime().exec("killall dbus-daemon");
|
antwort = "Abspielen gestartet, url: " + urlStr;
|
}
|
catch(IOException ex) {
|
antwort = "Fehler: " + ex.getMessage();
|
}
|
return antwort;
|
}
|
|
@Override
|
public StringBuilder buildParams(HttpExchange t, Map m) {
|
return new StringBuilder();
|
}
|
|
}
|