Archiv verlassen und diese Seite im Standarddesign anzeigen : Videos automatisch mit dem DivX Webplayer abspielen
Hallo
Da ich viele Videos mit meiner Kamera aufnehme hat ein Freund von mir mir ein PHP Script erstellt dass alle Videos die in einem Ordner liegen automatisch auflistet, wenn man eines davon dann anklickt erscheint automatisch der DivX Webplayer und gibt das Video wieder.
Jetzt hat es aber ein Fehler im Script, da ich die Videos auf verschiedene Ordner aufgeteilt habe z.b. "Sommerferien 2008" ect. kommt es zu diesem Fehler.
Denn wenn man einen Ordner anklickt kommt auch der DivX Webplayer und versucht den ORDNER wiederzugeben was er natürlich nicht kann ...
Jetzt wäre ich extrem froh wenn mir jemand da weiterhelfen könnte und dies im Script ändern könnte da ich keine Ahnung von PHP habe.
Demo (http://87.118.88.28/)
Das ganze Script besteht aus 3 Dateien:
index.php
<?php
require_once("config.inc.php");
echo"<html>
<head>
<title>Movies</title>
</head>
<body>
<h1>Movies</h1><ul>";
if ($handle = opendir($moviedir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "index.html") {
echo "<li><a href=\"play.php?movie=".$file."\">$file</a></li>\n";
}
}
closedir($handle);
}
echo"</ul>
</body>
</html>";
?>
config.inc.php
<?php
$moviedir = "movies"; // Von dieser Datei (config.inc.php) aus gesehen, wo die Movies liegen
?>
play.php
<?php
require_once("config.inc.php");
echo"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
?>
<!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" xml:lang="de" lang="de">
<head>
<title>Play » <?php echo $_GET["movie"]; ?></title>
</head>
<body>
<h1><?php echo $_GET["movie"]; ?></h1>
<p><a href="index.php">Zurück zur Übersicht</a></p>
<div style="text-align:center; width:100%;">
<object classid="clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616" width="640" height="372" codebase="http://go.divx.com/plugin/DivXBrowserPlugin.cab">
<param name="custommode" value="none" />
<param name="src" value="<?php echo $moviedir."/".$_GET["movie"]; ?>" />
<embed type="video/divx" src="<?php echo $moviedir."/".$_GET["movie"]; ?>" custommode="none" width="640" height="372" pluginspage="http://go.divx.com/plugin/download/">
</embed>
</object>
<br>No video? Get the DivX Web Player for <a style="text-decoration: underline;" href="http://download.divx.com/player/DivXWebPlayerInstaller.exe">Windows</a> or <a style="text-decoration: underline;" href="http://download.divx.com/player/DivXWebPlayer.dmg">Mac</a>
</div>
</body>
</html>
AmicaNoctis 23-10-2009, 01:43 Hallo,
diese Anfrage gehört in "Projekthilfe".
Gruß,
Amica
<?php
require_once("config.inc.php");
$extensions = array(".avi", ".mkv"); // in die config.inc.php schieben
function extensionSupported ($pFileName, $pExt) {
foreach ($pExt as $v) {
if (basename($pFileName, $v) . $v == $pFileName) {
return true;
}
}
return false;
}
function scanVideoFiles ($pPath, $pExt, $pStartPath = null) {
if (is_null($pStartPath)) {
$pStartPath = realpath($pPath) . "/";
}
$res = array();
$dh = opendir($pPath);
while ($name = readdir($dh)) {
$path = $pPath . "/" . $name;
if ($name != "." && $name != ".." && is_dir($path)) {
if ($subres = scanVideoFiles($path, $pExt, $pStartPath)) {
$res[$name] = $subres;
}
}
else if (is_file($path) && extensionSupported($name, $pExt)) {
$res[$name] = str_replace("\\", "/", substr(realpath($path), strlen($pStartPath)));
}
}
closedir($dh);
return $res;
}
function createLiElements ($pArray) {
$res = "";
foreach ($pArray as $k => $v) {
$res .= "<li>";
if (is_array($v)) {
$res .= $k . "<ul>" . createLiElements($v) . "</ul>";
}
else {
$res .= "<a href=\"play.php?movie=" . $v . "\">" . $k . "</a>";
}
$res .= "</li>";
}
return $res;
}
?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Movies</title>
</head>
<body>
<h1>Movies</h1>
<ul><?php echo(createLiElements(scanVideoFiles($moviedir, $extensions))); ?></ul>
</body>
</html>
Sorry, habe mich gerade erst angemeldet und in der beschreibung steht:
Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren.
Würde also eigentlich passen von der Beschreibung her :)
AmicaNoctis 23-10-2009, 02:08 Ne, passt nicht ;)
Jetzt wäre ich extrem froh wenn mir jemand da weiterhelfen könnte und dies im Script ändern könnte da ich keine Ahnung von PHP habe.
Du wolltest keine Probleme diskutieren, sondern konkrete Hilfe in Form von fertigem Code. Es ist jetzt auch kein Beinbruch, dass du das hier gepostet hast. Wenn wahsaga dann hoffentlich nochmal vorbeischaut, verschiebt er es an die richtige Stelle. Ich wollte dir das nur gleich für's nächste Mal sagen.
Edit: Wenn ich grad schon einmal beim Belehren bin, hätte ich nochwas. Für Code gibt es auch entsprechende Buttons. Der Zitat-Button ist da ungünstig, weil der die Formatierung kaputt macht und es auch nicht so schön bunt wird. ;)
Läuft's jetzt wenigstens so wie's soll?
Mit diesem Code läuft gar nichts mehr!
Hier die abgeänderte Version: Demo von der neue Version (http://87.118.88.28/test/)
Folgender Fehler kommt immer:
Parse error: syntax error, unexpected T_STRING in /var/www/test/index.php on line 51
ps: Ich habe jetzt den ersten Beitrag editiert und den PHP Button benuzt :)
AmicaNoctis 23-10-2009, 11:42 Dann nimm bitte die XML-Deklaration raus oder schalt das blöde short_open_tag in der php.ini ab.
onemorenerd 23-10-2009, 11:48 ... oder gib die XML-Deklaration mit PHP aus. Dann bleibt die Ausgabe valides XHTML-strict und dir kann die short_open_tag-Einstellung egal sein.
echo '<'.'?xml ....>';
Wie ich gerade gesehen habe versteht ihr mich falsch!
Ich wollte das wenn man ein Video anklickt automatisch dieses im DivX Webpalyer abgespielt wird.
Und wenn man einen Ordner anklickt sollte sich dieser öffnen, damit man den ein Video darin aussuchen und anschauen kann!
Es war nie die Idee diese einfach auszublenden :D
Sorry wenn ich mich undeutlich ausgedrückt habe :(
Hoffe ihr könnt mir trotzdem weiterhelfen.
AmicaNoctis 23-10-2009, 21:32 Ordner werden nur ausgeblendet, wenn nichts drin ist. Vielleicht solltest du das erstmal ändern, bevor du dich schon wieder beschwerst.
Beschwert habe ich mich nicht 1 mal!
Für mich ist es gar nicht selbstverständlicgh wenn sich jemand einfach so Zeit für mich nimmt und mir versucht zu helfen!
Daher habe ich mich auch gleich dafür entschuldigt das ich mich eventuell falsch ausgedrückt habe!
Ich werde gleich eine Datei in den Ordner kopieren udn schauen ob es jetzt geht.
Jedenfalls danke schonmal das du mir wieder geholfen hast :)
AmicaNoctis 23-10-2009, 21:52 Beschwert habe ich mich nicht 1 mal!
... sondern 2 mal:
Mit diesem Code läuft gar nichts mehr!
Wie ich gerade gesehen habe versteht ihr mich falsch!
Aber vielleicht liegt das an meiner subjektiven Interpretation der Ausrufezeichen, die in meiner Welt aus einer unbefriedigten Aussage eine Beschwerde oder einen Vorwurf machen.
Jedenfalls ist es in Foren günstig, wegen der fehlenden Mimik und Körpersprache, auf GROßSCHREIBUNG ZU VERZICHTEN und keine (!!!) Ausrufezeichen zu verwenden, wenn es auch ein Punkt tut, weil sonst manches leicht missverstanden werden kann!!! ;)
Okay jetzt geht es ohne Probleme!
Noch eine kleine Frage:
Wie ich im 1. Post geschrieben habe habe ich sehr sehr viele Videos und da es mit dieser Methode die Dateien in den einzelnen ordner schon auf der Startseite anzeigt ist es leider extrem unübersichtlich
Könnte man es nicht so einstellen das man die Ordner zuerst öffnen muss damit man die Dateien darin sieht?
Denn schon die vielen Ordner geben ein wenig unübersichtlichkeit, aber wenn den die ganzen Videos darin auch noch gleich mitaufgelistet werden ist es wie ein Buch :goth:
ps: Dies sollte keine Beschwerde sein sondern eine Bitte es anderst Darzustellen!
Bin schon sehr froh das, dass Script jetzt ohne probleme funktioniert.
Wäre halt schön wenn es jetzt noch "perfekt" wäre :)
Da haben wir uns wohl ein wenig falsch verstanden :)
Mit dem ersten Punkt das jetzt nichts mehr geht wollte ich es nur "melden" und mich nicht beschweren.
Und zu Punkt zwei habe ich ja dazu geschrieben das ICH mich falsch ausgedrückt habe und nicht IHR etwas falsch gemacht habt.
Hoffe damit ist es geklärt das ich nur froh bin das ihr mir helft, und nicht das ich mich die ganze Zeit beschwere :danke:
ps: Falls du das Script möchtest um mir einfacher helfen zu können
Original Script: http://87.118.88.28/markyplay.rar
AmicaNoctis 23-10-2009, 23:40 Wie ich im 1. Post geschrieben habe habe ich sehr sehr viele Videos und da es mit dieser Methode die Dateien in den einzelnen ordner schon auf der Startseite anzeigt ist es leider extrem unübersichtlich
Das wusste ich leider nicht. Reicht dir auch was JS-dynamisches mit Auf- und Zuklappen? Ansonsten müssten nämlich die beiden Funktionen umgeschrieben werden.
<?php
require_once("config.inc.php"); // $extensions muss dort schon drin sein
function extensionSupported ($pFileName, $pExt) {
foreach ($pExt as $v) {
if (basename($pFileName, $v) . $v == $pFileName) {
return true;
}
}
return false;
}
function scanVideoFiles ($pPath, $pExt, $pStartPath = null) {
if (is_null($pStartPath)) {
$pStartPath = realpath($pPath) . "/";
}
$res = array();
$dh = opendir($pPath);
while ($name = readdir($dh)) {
$path = $pPath . "/" . $name;
if ($name != "." && $name != ".." && is_dir($path)) {
if ($subres = scanVideoFiles($path, $pExt, $pStartPath)) {
$res[$name] = $subres;
}
}
else if (is_file($path) && extensionSupported($name, $pExt)) {
$res[$name] = str_replace("\\", "/", substr(realpath($path), strlen($pStartPath)));
}
}
closedir($dh);
return $res;
}
function createLiElements ($pArray) {
$res = "";
foreach ($pArray as $k => $v) {
$res .= "<li>";
if (is_array($v)) {
$res .= "<a href=\"#\" onclick=\"expandSubmenu(this)\">" . $k . "</a>"
. "<ul class=\"submenu\">" . createLiElements($v) . "</ul>";
}
else {
$res .= "<a href=\"play.php?movie=" . $v . "\">" . $k . "</a>";
}
$res .= "</li>";
}
return $res;
}
?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Movies</title>
<style type="text/css">
ul.submenu { display: none; }
</style>
<script type="text/javascript">/*<![CDATA[*/
function expandSubmenu (pLink) {
var ulNodes = document.getElementsByTagName("ul");
for (var i = 0; i < ulNodes.length; i++) {
if (ulNodes[i].className == "submenu") {
ulNodes[i].style.display = "none";
}
}
pLink.nextSibling.style.display = "block";
for (var n = pLink.parentNode.parentNode; n; n = n.parentNode.parentNode) {
if (n.nodeName.toLowerCase() == "ul") {
n.style.display = "block";
}
else {
break;
}
}
}
/*]]>*/</script>
</head>
<body>
<h1>Movies</h1>
<ul><?php echo(createLiElements(scanVideoFiles($moviedir, $extensions))); ?></ul>
</body>
</html>
Kann gerade nicht sagen ob ich das mit dem zuklappen gut finde da nur eine Fehlermeldung kommt :(
Parse error: syntax error, unexpected T_STRING in /var/www/index.php on line 51
Seite (http://87.118.88.28/)
AmicaNoctis 24-10-2009, 19:10 Die kennst du doch schon, das ist die XML-Deklaration vom Anfang. Wie du die behebst, findest du weiter oben im Thread.
Okay behoben.
Nächste Fehlermeldung ist aber gleich da:
Warning: Invalid argument supplied for foreach() in /var/www/index.php on line 5
AmicaNoctis 24-10-2009, 23:03 Hast du die Zeile mit "$extensions = ..." in die config.inc.php eingefügt?
|
-
- |