Problem: Multimedia-Server; Dateistart funzt nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem: Multimedia-Server; Dateistart funzt nicht

    Hallo

    Bastel mir gerade nen Webfrontend für nen Multimedia-Server. Der MMS steht im LAN und auch nur daher sollen zugriffe möglich sein ...

    So sieht der MMS (WAMP) aus:
    c:\www ist das webdir
    d:\files das content-dir (aufgrund der menge an daten, letzte Ausbaustufe werdens wohl 400gb sein, wird auch auf andere Laufwerke ausgewichen, aber soweit bin cih noch net)

    Ich möchte jetzt via http nen link haben, der mir aufm Client nen mp3 abspielt. Folgendes hab ich dem mp3project @ http://www.webstart.at entnommen und nen bissel umgeschrieben (zum schnellen unkomplizerten testen):

    <?PHP
    function replace($string)
    {
    $string=str_replace(" ","%20",$string);
    $string=str_replace("+","%2B",$string);

    return $string;
    } // die funktion wurde included; 1:1 reinschreiben sollte ja nix problem sein

    // sql lass ich zum testen erstmal vorweg...
    // $query="select file from files where id='$id'";
    // $result=mysql_query($query);
    // $data=mysql_fetch_object($result);
    // <- unter file steht in der datenbank: d:alben 01/(test) lied2.mp3

    $mp3path = "d:\alben 01"; // laut beschreibung OHNE \
    $url = "http://dreamland2k.dyndns.org/alben 01"; // laut beschreibung ohne \
    $buffer="";
    $data = "d:alben 01/(test) lied2.mp3"; // siehe oben, normal via sql geholt
    $file=replace($data); // orginal: ...($data->file)

    //ab hier 1:1
    $http=str_replace($mp3path,"$url",$file);
    $buffer.=$http."\n";
    $size = strlen($buffer);
    header("Pragma: no-cache");
    header("Expires: Tue Jan 26 09:38:24 EST 1999");
    header("Content-Type: audio/x-mpegurl");
    header("Content-Length: " . $size );
    print $buffer;
    ?>

    Naja der Mediaplayer startet auch aufm Client aber das mp3 wird net geladen, stattdessen ne fehlermeldung: "Windows Media Player kann 'http://dreamland2k.dyndns.org/test/test.php' nicht öffnen. Überprüfen Sie den Pfad und den Dateinamen und wiederholen Sie den Vorgang. (Fehler=8004406D)"

    Soch ok

    hoffe jemand hat ne idee wo der fehler liegt bzw. gibt mir nen tip wie ich das hinbekomme (wie gesagt: webdir und file-dir sollen nicht im gleichen dir/unterdir sein!)

    Vielen dank schonmal im Vorraus
    Wuppi

    PS: bin noch php-neuling



  • #2
    was soll denn das print $buffer bewirken?? Da steht doch irgendwie die URL des zu ladenden Files drin, oder? Gehört doch somit entweder zur Headerausgabe oder vorher einlesen und dann Inhalt ausgeben.

    Kommentar


    • #3
      Brainbug:

      weiß ich net hab das teil ja von webstart.at wie erwähnt.

      //ab hier 1:1 <- das print $buffer war da halt auch bei...

      Meine Frage is nur wieso das net geht, obwohl ich das teil eigentlich 1:1 rausgeript hab.. Ok die function hab ich aus ner datei die included wurde kopiert und die variablen hab ich manuell gefüllt...

      Da ich webdir und file-dir komplett getrennt hab. Im mom hab ich wieder so ne php-down-phase wo ich nix rumtesten will (kann sich schlagartig ändern - KANN sonst würd ich das file-dir im apache mit nem alias dem webdir "hinzufügen" ... aber das möchte ich ungern ... muß doch auch so gehen??? also 2 KOMPLETT getrennte dirs??? ich bekomm das teil von webstart.at net zum laufen (loginbildschirm verschwindet net - doll) sonst würd ich eben gucken können wo die files sein müssen ...

      Bis dann
      Wuppi

      Kommentar


      • #4
        laß dir doch mal ausgeben, was in $buffer überhaupt drinsteht.

        Kommentar


        • #5
          jetze abba

          ich hab da gleich zwei ansätze...
          ich hatte gestern schon geantwortet, aber ich hatte den "neues thema"-knopf erwischt...
          also:

          1. ich weiss nicht, ob das bei php auch so ist, aber in asp und dergleichen (c#, asp.net, perl und so...) muss man pfadangaben in variablen maskieren:
          statt $lied = "d:\datei.mp3"
          eher $lied = "d:\\datei.mp3"

          2. ich kenn mich mit headern genausowenig wie mit php aus, aber könnte es sein, dass der "expires"-eintrag das ganze einfach wieder aus dem user-cache löscht? bei cookies ist das ja bekanntlich so: setze expires kleiner als jetzt und er verschwindet...

          war nur n versuch...
          warum??

          Kommentar


          • #6
            aha

            hier gehörst du also hin... dann lösche ich mal den fehlgeleiteten Eintrag....

            zu 1. das mit dem Maskieren brauchst du unter PHP nicht.

            Kommentar


            • #7
              Also der Explorer zeigt mir nix an! nichtmal fehlermeldung! es wird nur winamp gestartet - und dort open file-menu ....

              Ich hab direkt nach der $buffer-variable nen echo $buffer; gemacht und auch mal ganz am ende ... nix

              Jetzt mal opera probiert:
              1. Fensterchen: d:alben%2001/(test)%20lied2.mp3 in titelleiste; ungültige adresse im fenster;
              2. Fensterchen: gleiches im titel; Interner Kommunikationsfehler
              Auch hier seh ich nix echo

              Kommentar


              • #8
                nein, um dir $buffer auszugeben, solltest du den Header-Teil mal auskommentieren:
                Code:
                //ab hier 1:1 
                $http=str_replace($mp3path,"$url",$file); 
                $buffer.=$http."\n"; 
                $size = strlen($buffer); 
                //header("Pragma: no-cache"); 
                //header("Expires: Tue Jan 26 09:38:24 EST 1999"); 
                //header("Content-Type: audio/x-mpegurl"); 
                //header("Content-Length: " . $size ); 
                echo "Buffer: ".$buffer;
                da müßte ja irgendeine URL drinstehen, oder? Ist diese überhaupt korrekt? Steht da was oder nix?

                Kommentar


                • #9
                  Argh - das war bei 2 browsern noch im Cache (obwohl ich mehrfach retry gemacht hab!)

                  Also so schauts aus:
                  d:alben%2001\(test)%20lied2.mp3

                  der pfad is fast richtig *G* aber auch nur fast ....

                  Langsam glaub ich das ich d:\alben 01\ über alias in der apache.config gehen muß....

                  Bei meinen Mp3s wäre es noch übersichtlich, aber das gleiche problem werd ich auch beim AVI-Teil haben - hier komm ich schnell auf 300-400gb und muß entweder raiden oder mehrer hds nutzen... kann man den in der alias z.b. sagen das
                  c:\mp3 UND d:\mp3 unter http://server/mp3-dirs/ zu erreiche sind? oder müssen das dann auch 2. http-ziele sein?




                  Kommentar


                  • #10
                    das mit dem alias

                    ein alias für verschiedene quellen heisst unter win2k "verteilte freigaben". gibts also, zumindest funktioniert es bei netzwerkfreigeben, sollte also nach aussen auch laufen.

                    aber warum apache.config? dass du ihn apache nennst heisst ja, dass er auf win läuft. ob das so gut ist? ich hab lokal den iis und den apache (a patchy server) laufen, ich vertrau dem iis aber mehr, was die kommunikation mit dem os angeht..
                    warum??

                    Kommentar


                    • #11
                      ich versteh nicht, warum da die URL überhaupt encoded ist. Vielleicht solltest du mal den replace()-Aufruf einfach mal weglassen, damit die URL auch richtig dargestellt wird. Woher soll der Browser oder eine Anwendung denn wissen, dass zuerst die / oder \ decoded werden müssen.

                      Kommentar

                      Lädt...
                      X