Noch etwas: Der Player in deiner Grafik sieht ganz anders aus als der Player, der von der Testseite angezeigt wird. Dieser ist der Player von HTML5 und er sieht in jedem Browser anders aus - probiere es aus. Ich selber benutze den Mediaelement-Player:
http://mediaelementjs.com/
Dieser sieht annähernd so aus wie in deiner Grafik, bis auf den Lautstärkebalken. Überlege, ob wir beim HTML5-Player bleiben oder mediaelement nehmen.
Beiträge von Sempervivum
-
-
Zitat
es hat sehr lange gedauert bis sich die Testseite aufgebaut hat
Ich vermute, dass das nicht nur an dem var_dump liegt, sondern vor allem daran, dass ja die MP3s gelesen werden müssen, um die Tags zu ermitteln. Im Zusammenhang damit müssten wir zunächst eine Frage klären, bevor ich weiter mache:
Wählt man aus der Liste einen anderen Titel aus, wird leider die Seite neu geladen. Das bedeutet, dass in diesem Fall wieder die ganze Zeit verstreicht, in der die Tags gelesen werden. Probiere das mal aus. Wenn es nicht akzeptabel ist, müssten wir uns von diesem Verfahren verabschieden und den ausgewählten Titel mit Javascript an den Player schicken, so dass er gespielt wird, ohne dass die Seite neu geladen wird. -
Na, das ist doch ein großer Fortschritt, dass jetzt die Tags ausgelesen werden.
Dann poste mal, welche Tags Du brauchst (wenn Du das var_dump() aktivierst, siehst Du, dass sehr viele vorhanden sind) und wo sie angezeigt werden sollen. Ich glaube, früher hattest Du geschrieben, dass z. B. das Bild über dem Player angezeigt werden soll. Also beschreibe genau welches Tag wo angezeigt werden soll, in der Liste unter dem Player für alle Titel oder/und in dem Anzeigefeld über dem Player für den aktuellen. -
Dieses ist wohl das entscheidende:
"Caught exception: Required module.tag.id3v2.php is missing."Anscheinend ist die Datei getid3.php wohl doch nicht ausreichend, sondern er braucht weitere Dateien aus diesem Verzeichnis. Versuche, alle wieder hochzuladen, dann müsste es sich verbessern. Das sind ca. 1,7 MB und diese müssen ja nicht herunter geladen werden, wie bei js-Dateien, sondern sie werden nur auf dem Server gebraucht.
-
-
Zitat
reicht nur dieser Pfad und dort als einzige (!) Datei die "getid3.php"?!?
Genau, Du brauchst auf dem Server nur diese eine Datei. -
Die Ausgabe von var_dump() liefert die Erklärung, warum es nicht funktioniert:
"getID3() requires PHP v5.3.0 or higher - you are running v5.2.17"Das PHP deines Servers ist zu alt. 5.2 wird schon lange nicht mehr unterstützt. Informiere dich bei deinem Hoster, wie Du auf eine neuere Version upgraden kannst.
-
-
PS: Ups, das war nichts: Wenn ich diese Datei im Broswer aufrufe, wird natürlich das PHP nicht angezeigt, sondern nur geparst.
-
Ich habe deinen PHP-Code aus der txt-Datei und die beiden MP3s herunter geladen, die Pfade in meinem lokalen Verzeichnis angepasst und damit funktioniert es bei mir einwandfrei.
Ich habe festgestellt, dass deine Datei http://www.foto-finish.de/getID3-1.9.12/getid3/getid3.php zwar gefunden wird, aber leer ist. Ist da vielleicht bei Hochladen etwas schief gelaufen? -
Das wäre diese Zeile:
Würde bedeuten, dass der title-Tag in der MP3 nicht vorhanden ist. Das wundert mich, denn ich hatte mit "Here And Now And There And Then - Lenni Paul Klimek" getestet und da wurde der Titel angezeigt. Versuche es zunächst mal mit dieser Datei. -
Dieser Fehler kommt offenbar von dieser Zeile:
Offenbar hat er die MP3s noch nicht gefunden. Bist Du sicher, dass der Pfad richtig ist und dass die MP3s dort liegen?
Edit1: Doch, die MP3s sind da. Dann verstehe ich nicht, warum er sie nicht findet.
Edit2: Leider kann ich den PHP-Code nicht einsehen. Vielleicht kannst Du den Code der Seite zusätzlich mit der Endung "txt" hoch laden, dann kann ich ihn dort lesen. -
Nein, es muss natürlich nicht unbedingt "audio" sein, Du kannst den Pfad beliebig anpassen. Ich hätte ihn als Konstante ganz oben in dem Skript definieren sollen.
Und nein, Du brauchst die Bilder nicht explizit als Thumbnails abzulegen. Das Skript liest sie aus den MP3s.
Und was dieses betrifft:
ZitatFatal error: Cannot use [] for reading in /home/foto-finishde/public_html/S-Test.php on line 15
Anscheinend unterstützt deine PHP-Version die Schreibweise mit [] nicht. Verwende statt dessen dieses:
-
Du musst deine MP3s in das Verzeichnis audio legen. Hast Du das getan? Ich habe den Code natürlich getestet und bei mir hat er einwandfrei funktioniert.
Ich habe auch eine von deinen MP3s getestet und sie wird einwandfrei angezeigt, einschl. Bild, und abgespielt. -
Ich bin mal nach diesen beiden Anleitungen vorgegangen:
http://www.phpgangsta.de/moglichkeiten-…mp3s-auszulesenhttp://stackoverflow.com/questions/1674…-an-mp3-id3-tag
Damit funktioniert es einwandfrei, einschl. Auslesen des Bildes, wenn denn eines vorhanden ist:
PHP
Alles anzeigen<?php error_reporting(E_ALL); ini_set('display_errors', '1'); /* #################################################################################### Ein einfacher Audio-Player auf HTML5 Basis. Browser: IE 9+, Chrome (auch iOS), Safari (auch iOS), Firefox ab V. 21, neue Opera http://webdesign.weisshart.de 2014 Lizenz: CC BY-NC-SA 3.0 DE ##################################################################################### */ /* ################### hier die .mp3 Dateien (Streams gehen als https nicht) ######## */ $url = []; /* ################### und hier die angezeigten Titel ######################### */ $name = []; $image = []; // include getID3() library (can be in a different directory if full path is specified) require_once 'getID3-1.9.12/getid3/getid3.php'; // Initialize getID3 engine $getID3 = new getID3; $files = glob("audio/*.mp3"); foreach ($files as $filename) { $url[] = $filename; $ThisFileInfo = $getID3->analyze($filename); // Analyze file and store returned data in $ThisFileInfo $name[] = $ThisFileInfo['tags']['id3v2']['title'][0]; if(isset($ThisFileInfo['comments']['picture'][0])){ $image[] = 'data:'.$ThisFileInfo['comments']['picture'][0]['image_mime'].';charset=utf-8;base64,'.base64_encode($ThisFileInfo['comments']['picture'][0]['data']); } else { $image[] = ''; } } /* ##################### ab hier nicht mehr editieren ########################## */ $aufruf =""; $direktlink =""; function isIOS($user_agent=NULL) { if(!isset($user_agent)) { $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; } return (strpos($user_agent, 'iPhone') !== FALSE || strpos($user_agent, 'iPad') !== FALSE || strpos($user_agent, 'iPod') !== FALSE ); } /* den uebergebenen Titel abfragen */ if (isset($_REQUEST['titel'])) { $autoplay="autoplay"; /* kein Autoplay in iOS */ $neuer_titel=true; for ($i = 1; $i <= count($url); $i++) { if ($_REQUEST["titel"] == $i) {$titel = $url[$i-1];} } } else { $titel = $url[0]; $autoplay = ""; } /* die Linkliste generieren */ for ($i = 1; $i <= count($url); $i++) { $aufruf .= '<li><a href="?titel='.$i.'"> '.$name[$i-1]; if ($titel == $url[$i-1]) { $aufruf .= "<span class='star'> ✔︎</span>"; } if ($image[$i - 1] != '') $aufruf .= '<img id="FileImage" width="150" src="' . $image[$i - 1] . '" height="150">'; $aufruf .= "</a></li>\n"; $direktlink .= '<li><a style="color:#000" href="'.$url[$i-1].'"> '.$name[$i-1].'</a>'; $direktlink .= '</li>'; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <link rel="stylesheet" type="text/css" media="screen" href="audiotest.css" /> <title>HTML5 Audio und Radio Player</title> <!-- <script src="modernizr.custom.29132.js"></script> --> <?php if(isIOS()) { echo ' <style> #player {background: #e1e1e1;border: 2px solid #aaa;} li a {color:#000 !important;} li {border-top: 1px solid #aaa} audio {margin: 10px 0 5px 0} </style> '; } ?> </head> <body onload="Lautstaerke()"> <!-- <h2>HTML5 Audio- und Radio-Player</h2> --> <div id="h2"></div> <script> if (top.location == self.location) { // Seite in einem Frame geladen document.getElementById('h2').innerHTML='<h1>HTML5 Audio- und Radio-Player</h1>'; } </script> <div id="ie_fallback"></div> <div id="player"> <!-- erstaunlich: ohne <source> tag gehts auch mit VO auf iOS --> <audio id="innerplayer" src="<?php echo $titel; ?>" controls <?php echo $autoplay; ?>></audio> <ul> <?php echo $aufruf; ?> </ul> </div> <div id="down_hinweis"></div> <!-- <p id="gemafrei" class="bem">Gemafreie Demo-mp3: <a href="http://www.MP3-GEMA-frei.de">MP3-GEMA-frei.de</a></p> --> <?php $neuer_titel = 0; if (isset($_REQUEST['titel'])) {$neuer_titel=1;} ?> <script> // if (!Modernizr.audio.mp3) { // document.getElementById('player').style.display = 'none'; // document.getElementById('ie_fallback').innerHTML='<p>Ihr Browser kann leider keine Audios im MP3-Format abspielen. Das tut uns leid. <br />Ersatzweise hier die Links zum Abspielen in einem installierten Player oder zum Download (rechte Maustaste).</p> <ul><?php echo $direktlink; ?></ul>'; // } /* Damit Screen Reader Ausgaben nicht uebertoent werden: */ function Lautstaerke() { document.getElementById("innerplayer").volume=0.7; /* Fokus auf Player setzen nach Anwahl */ var neu = <?php echo $neuer_titel; ?>; if ( neu === 1 ) { document.getElementById('innerplayer').focus(); } } </script> </body> </html>Dieses Skript liest die MP3s aus dem Unterverzeichnis audio aus.
-
Das sollte doch zu machen sein.
ZitatIch habe im Netz gesucht und wirklich einiges zum Thema gefunden, aber leider funktioniert dieses alles nicht
Poste doch mal, wonach Du vorgegangen bist und woran es gescheitert ist.
-
Hast Du dir jPlayer schon angesehen?
http://jplayer.org/latest/demos/
Edit: Ich sehe gerade, der ist von Haus aus nicht responsive, aber es gibt anscheinend Wege, das nachzurüsten:
http://stackoverflow.com/questions/2051…ayer-responsive -
Dazu musste ich das Ganze etwas umstrukturieren. Ich habe auch den roten Rahmen für das zweite Eingabefeld hinzu gefügt.
Code
Alles anzeigen<script> function toAm(str) { return str.replace(/\./g, "").replace(",", "."); } function multiply() { var val1 = document.getElementById("isk").value; var val2 = document.getElementById("fracht-msg").value; if (val1 != "" && val2 != "") { var val1 = toAm(val1); document.getElementById("endergebnis").value = formatNr(val1 * val2); } } function formatNr(nr) { str = nr.toString().replace(".", ","); var pos = str.indexOf(","); if (pos == -1) pos = str.length; var result = "", i = 0; do { result += str[i]; i++; if (((pos - i) % 3) == 0) result += "." } while (i < pos - 1) for (; i < str.length; i++) result += str[i]; return result; } function inputFracht(val) { var msgAbove = "Zu Groß"; var msgBelow = "Perfekt"; var limit = 300000; val = (toAm(val) * 500).toFixed(2); document.getElementById("isk").value = formatNr(val); var msgfield = document.getElementById("zuzahlen"); if (val > limit) msgfield.innerHTML = msgAbove; else msgfield.innerHTML = msgBelow; multiply(); } function inputFracht2(inp) { var msgBelow = "1000"; limit1 = 1000000000; var msgLimit1 = "200000"; limit2 = 2000000000; var msgLimit2 = "500000"; var val = inp.value.replace(",", "."); var val2 = document.getElementById("") var outp = document.getElementById("fracht-msg"); if (val >= limit2) outp.innerHTML = msgLimit2; else if (val >= limit1) outp.innerHTML = msgLimit1; else outp.innerHTML = msgBelow; multiply(); } </script> <form> Frachtgroesse<br> <input type="text" id="fracht" pattern="[1-9][0-9]*(,[0-9]+)?" oninput="inputFracht(this.value);"><br> <input type="reset" value="Löschen" /> <br> Isk zu zahlen:<br> <output id="isk"></output> <output id="zuzahlen"></output> Fracht: <input type="text" id="fracht2" pattern="[1-9][0-9]*(,[0-9]+)?" oninput="inputFracht2(this);"> <output id="fracht-msg"></output><br> <output id="endergebnis"></output> </form> <style> #fracht:invalid, #fracht2:invalid { border: 2px solid red; } </style> -
Ja, <style> und </style> sind HTML-Tags. Man braucht sie nur, wenn man CSS in einer HTML-Datei einbettet. In einer CSS-Datei dürfen nur CSS-Anweisungen (und Kommentare) stehen.
Wenn es bei dir trotzdem nicht funktioniert, solltest Du überprüfen, ob Pfad und Dateiname stimmen. -
Fehler gefunden. Dieses:
löscht nur den ersten Punkt, so dass ein String mit mehreren Punkten übrig bleibt. Das ist dann kein gültiges Format für eine Zahl und es ergibt NaN.
So ist es richtig: