1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Streamtranscoder verweigert Dienst, wenn über Webtrans gestartet

Dieses Thema im Forum "Internetradio- und Heimstudio-Software" wurde erstellt von Firephoenix01, 08. April 2014.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Firephoenix01

    Firephoenix01 Benutzer

    Guten Morgen, liebe Community,

    ich wende mich mit einem Problem an euch, das ich nicht so recht begreifen kann und bei dem ich Denkanstöße gebrauchen könnte. Konkret geht es um ein Problem mit einem Streamtranscoder, der seine Arbeit nicht verrichten will. Zuerst jedoch einmal ein paar technische Details:

    Verwendetes Betriebssystem des Servers: Ubuntu 12.04.1 LTS (auf aktuellem Stand)
    Zum Einsatz kommt ferner die PHP-basierte Steuersoftware Web-Trans, die von http://sourceforge.net/projects/web-trans/ herunter geladen wurde. Diese Version beinhaltet einen vorgefertigten Streamtranscoder mit vorgefertigter Config für den Transcoder.

    Die Configurationsdatei für den Transcoder sieht folgendermaßen aus (Passwort durch Sternchen ersetzt):

    Code:
    PlaylistFile=/home/shoutcastdj/sc_trans_040/test1.lst
    ServerIP=85.214.247.94
    ServerPort=8010
    Password=******
    StreamTitle=FamousFM Autostream
    StreamURL=http://www.famousfm.de
    Genre=Mixed
    LogFile=sc_trans.log
    Shuffle=0
    Bitrate=128000
    InputSamplerate=44100
    InputChannels=2
    Quality=1
    CrossfadeMode=0
    CrossfadeLength=4000
    UseID3=1
    Public=0
    AIM=Autostream
    ICQ=
    IRC=

    Die in Zeile 1 vermerkte Datei sieht folgendermaßen aus (zum Testen vier Einträge):


    Code:
    /home/shoutcastdj/mp3/Interpret - Titel.mp3
    /home/shoutcastdj/mp3/Interpret - Titel.mp3
    /home/shoutcastdj/mp3/Interpret - Titel.mp3
    
    Die MP3-Dateien, die in der LST-Datei vermerkt sind, sind vorhanden und es wurde bei der Benennung der Dateien darauf geachtet, ausschließlich Buchstaben zu verwenden, die im allgemeinen Zeichensatz vorhanden sind (keine Sonderzeichen, Umlaute. etc.)

    Die Steuerdatei von Webtrans sieht folgendermaßen aus (HTML und CSS wurde angepasst):

    Code:
    <?php
    include('loginauth.php');
    include_once("functions.php");
    include_once("config.php");
    
    $action = getRequestVar('action');
    
    if ($action == "")
    {
        unset($action);
    }
    
    if (isset($action))
    {
        $hostname = $_SERVER['HTTP_HOST'];
        $path = dirname($_SERVER['PHP_SELF']);
       
        if ($action == "stop")
        {   
             //if($sc_proc_id != 0){
                shell_exec($soundbase."/sc_trans stop");
            //}
            //else {
                //echo "SC_TRANS_LINUX killed";
            header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
            //}
        }
        elseif($action == "restart")
        {
            shell_exec($soundbase."/sc_trans stop");
            sleep(2);
            shell_exec($soundbase."/sc_trans start");
            header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
           }
        elseif($action == "reload")
        {
            $sc_proc_id = shell_exec("ps -A | grep sc_trans_linux | cut -c 1-6;");
            shell_exec("kill -s USR1 ".$sc_proc_id);
           
            //header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
           }
       
       elseif($action == "start")
        {
            $file = $soundbase."/sc_trans.conf";
            $filehandle = fopen ($file, "r+");
            $contents = fread($filehandle, filesize($file));
            fclose($filehandle);
            $pos = strpos($contents, "LogFile=") ;
            $contents = substr($contents, $pos+8);
            $Logfile = strtok($contents, "\n");
           
            if($sc_proc_id == 0){
                shell_exec("rm ".$soundbase."/".$Logfile);
                shell_exec("touch ".$soundbase."/".$Logfile);
                shell_exec($soundbase."/sc_trans start sc_trans.conf");
                }
            header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
        }
       
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Steuerung des Autostreams</title>
    <link href="webtrans.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    
    
    <div style="width:1000px; margin:0 auto;">
    <div style="background:url(../images/head.png); width:960px; height:148px; background-repeat:no-repeat;">&nbsp;</div>
    <div style="background:url(../images/body.png); width:960px; min-height:220px; background-repeat:repeat-y; padding-left:15px; position:relative; margin-top:-15px;">
    <h1>Steuerung des Autostreams</h1>
    <div style="width:600px;">
    Hier kannst du den Autostream starten und stoppen.<br /><br />
    <table width="350" border="0">
    
                <tr>
                    <td class="tablea1"><a class="tablea1" style="display:block;" href="index.php?action=start"></a></td>
                        <td class="tablea2"><a class="tablea2" style="display:block;" href="index.php?action=stop"></a></td>       
                    <td class="tablea9"><a class="tablea9" style="display:block;" href="logout.php"></a></td>
                </tr>
    </table>
    </div>
    <div style="width:930px; padding-right:15px;">
    <br />
    <div style="width:auto; max-width:260px; font-weight:bold; background-color:#a90606; color:#ffffff; margin-bottom:15px; border:1px dashed #000000; padding:2px; margin-left:3px; text-align:center; text-shadow:2px 2px 2px #000000;"><?php
    
    $sc_proc_id = "";
    $sc_proc_id = shell_exec("ps -A | grep sc_trans_linux | cut -c 1-6;");
    //var_dump($sc_proc_id);
    if($sc_proc_id == "") { echo "Autostream ausgeschaltet";}
    else echo "Autostream eingeschaltet";
    ?></div>
    </div>
    </div>
    <div style="height:5px; width:960px; border-top:3px solid #999999;">&nbsp;</div>
    </div>
    </body>
    </html>
    
    Es handelt sich quasi um den Originalcode der Datei. Nach Recherche wurden an zwei Stellen Ändeurngen vorgenommen. Und zwar wurde aus shell_exec("ps -A | grep sc_trans_linux | cut -c 0-6;"); nun shell_exec("ps -A | grep sc_trans_linux | cut -c 1-6;"); gemacht.

    Die in Zeile 4 eingebundene Config-Datei sieht folgendermaßen aus:
    Code:
    <?php
    
    //Path to sc_trans_linux (included in the package)
    $soundbase = "/home/shoutcastdj/sc_trans_040/";
    
    //Path to the soundfiles
    $soundfiles = "/home/shoutcastdj/mp3";
    
    $loginuser = "****";
    $loginpass = "****";
    $loginpass1 = "****";
    
    ?>
    Der Rest ist unverändert geblieben.

    Nun zu meinem Problem:
    Die Steuerdatei besitzt zwei Buttons zum Starten und Stoppen des Transcoders, die mit den Befehlen shell_exec($soundbase."/sc_trans stop"); bzw. shell_exec($soundbase."/sc_trans start"); belegt sind. Hinzu kommt eine Abfrage, die schaut, ob der Streamtranscoder aktiv oder inaktiv ist und eine entsprechende Ausgabe am Bildschirm vornimmt.

    Der Klick auf Autostream starten führt die Anweisung korrekt aus. Der Serverdienst wird gestartet und taucht auch in der Auflistung aller aktiven Serverdienste auf. Es wird jedoch kein Titel abgespielt und in der Anzeige des gerade aktuellen Songs taucht eine mehr oder weniger zufällige Buchstaben-Zahlen-Kombination auf. Der Shoutcastserver meldet nach etwa 30 Sekunden ein Timeout, weil kein Input vorhanden ist. Währenddessen läuft der Transcoderdienst munter weiter.

    Kurios ist jetzt allerdings folgende Sache: Starte ich den Streamtranscoder über Putty mit dem Befehl /sc_trans start sc_trans.conf (der gleiche Befehl wie in der Steuerdatei von Webtrans), verrichtet das Programm seine Aufgabe genau so, wie es das soll. Der Autostream wird gestartet und es sind Titel zu hören. Es kann dann über die Weboberfläche jedoch nicht mehr gestoppt werden. Ein Klick auf die entsprechende Anweisung wird ignoriert. Ich nehme an, dass Letzteres mit Benutzerrechten zu tun hat.

    Lustig ist auch Folgendes: Bis vorgestern hat die oben beschriebene Konfiguration tadellos fast ein Jahr lang funktioniert. Dann muss irgendetwas passiert sein, was ich nicht nachvollziehen kann. Ich hab auch bereits Shoutcaststream und Transcoder neu aufgesetzt, um sicher gehen zu können, dass nicht doch irgendwer irgendwo Code verändert hat aber geholfen hat das nicht.

    Nach nun mehr 11 Stunden Arbeit und Rumprobiererei sehe ich einfach den Wald vor lauter Bäumen nicht mehr und brauche vielleicht den einen oder anderen Hinweis auf die Lösung des Problems.

    Vielen lieben Dank im Voraus
    René
     

Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen