• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Lokale Links mit XAMPP

duemu

Neues Mitglied
Hallo Zusammen

Ich bin dabei, eine Filmdatenbank für alle meine Filme zu machen.

Ein paar Informationen:
-Alle Filme werden auf einer php Seite mit Bild, Beschreibung und Link zu der Filmdatei aufgelistet.
-Ich verwende XAMPP um überhaupt php anzeigen zu können.
-Die php Files sind ja standardmässig in c:/xampp/htdocs abgelegt
-Die Filme sind auf einer externen Hard Disk gespeichert (x:/movie/)

Ich habe die Seite mal online gestellte damit ihr sehen könnt wie ich es meine: Meine Filme

Ich will auf der Seite einen Direktlink zu jedem Film hinzufügen
Leider kann ich nicht auf die Filme zugreifen, weil man ja aus Sicherheitsgründen keine lokale Links öffnen kann (Also <a href="file:///x:/Movies/filmname.avi">Film ansehen</a>)

Kann man xampp so Konfigurieren, dass der Link trotzdem funktionieret oder muss ich den xampp htdocs Pfad auf meine Externe HDD setzen damit ich die Filme mit "../Movies/filmame.avi" öffnen kann?
Oder gibt es eine alternative zu "file://" die funktioniert?

Vielen Dank für eine Antwort!

mfg duemu
 
Werbung:
Mit PHP kannst du den Film sozusagen über die Kommadozeile starten. Also beispielsweise shell_exec("PFAD ZU VLC FILMDATEI");. Folglich: Erstellen einer PHP-Datei, die über Parameter den entsprechenden Film gleich im richtigen Player über die Kommandozeile öffnet.
 
Danke für die Antwort.

Aber wie genau muss dieser shell Befehl aussehen? Habe ehrlich gesagt keine Ahnung wie das funktioniert.
Kann ich den Film einfach mit
shell_exec("X:\Movies\filmname.avi"); öffnen?
Oder muss ich zuerst das Programm angeben? shell_exec("C:\Programme\VideoLan\VLC\vlc.exe x:\Movies\filmname.avi");?

Habe bemerkt dass einige Filme im Dateiname einen space haben. Im cmd jedenfalls schneidet mir es dann den Dateiname ab dort ab. Ist das hier auch so?

Und wie kann ich das ganze in einen Link einbinden?

Hoffe meine Fragen sind nicht allzublöde... :smile:
 
Werbung:
Leider kann ich nicht auf die Filme zugreifen, weil man ja aus Sicherheitsgründen keine lokale Links öffnen kann (Also <a rel="nofollow" href="file:///x:/Movies/filmname.avi">Film ansehen</a>)

Wieso sollte das nicht gehen, wenn Du nur lokal arbeitest?

Kann man xampp so Konfigurieren, dass der Link trotzdem funktionieret oder muss ich den xampp htdocs Pfad auf meine Externe HDD setzen damit ich die Filme mit "../Movies/filmame.avi" öffnen kann?

Wenn Du per file:// referenzierst muss ein lokaler Zugriff auch unabhängig vom Webserver (XAMPP) möglich sein. XAMPP kann dafür imho nichts.

Oder gibt es eine alternative zu "file://" die funktioniert?

Nein.

Mit PHP kannst du den Film sozusagen über die Kommadozeile starten. Also beispielsweise shell_exec("PFAD ZU VLC FILMDATEI");. Folglich: Erstellen einer PHP-Datei, die über Parameter den entsprechenden Film gleich im richtigen Player über die Kommandozeile öffnet.

Und was soll da passieren? Der php-Parser startet dann über umwege den auf dem Rechner installierten Videoplayer. Da kann man auch gleich einen direkten Link auf die Datei setzen.

Kann ich den Film einfach mit
shell_exec("X:\Movies\filmname.avi"); öffnen?
Oder muss ich zuerst das Programm angeben? shell_exec("C:\Programme\VideoLan\VLC\vlc.exe x:\Movies\filmname.avi");?

Die Wahl ist dir überlassen. In beiden Fällen sollte aber das selbe passieren wie wenn Du einen Link auf die Datei setzt.

Habe bemerkt dass einige Filme im Dateiname einen space haben. Im cmd jedenfalls schneidet mir es dann den Dateiname ab dort ab. Ist das hier auch so?

Umgib die Dateinamen mit Anführungszeichen. Also

Code:
"x:\Movies\datei mit leerzeichen.avi"

Ein Link auf so eine (in meinen Augen sinnfreie) php-Datei könnte z.B. so aussehen:
Code:
abspielen.php?datei=datei.avi
ist aber letztlich völlig dir und deiner Programmierung überlassen.
 
Wieso sollte das nicht gehen, wenn Du nur lokal arbeitest?

Solange ich die Seite lokal mit file:///C:/xampp/htdocs/film/test.html öffne, funktioniert der Link
Code:
<a href="file:///x:/Movies/LOL.avi">Film starten</a>
ohne Probleme.
Sobald ich aber die Seite über XAMPP mit http://localhost/film/test.html öffne funktioniert der selbe Link nicht mehr. (Habe es mit FF, IE 8 und Chrome ausprobiert)

Umgib die Dateinamen mit Anführungszeichen. Also

Code:
"x:\Movies\datei mit leerzeichen.avi"
Ein Link auf so eine (in meinen Augen sinnfreie) php-Datei könnte z.B. so aussehen:
Code:
abspielen.php?datei=datei.avi
ist aber letztlich völlig dir und deiner Programmierung überlassen.

Ok Danke, dann werde ich es mal so versuchen, ich denke so sinnfrei ist diese Methode nicht wenn es anders nicht geht (hoffe nur dass es so funktioniert)
 
Zuletzt bearbeitet:
Moderne Webbrowser trennen strikt lokale Links und Weblinks und daher ist eine Referenzierung nicht mehr ohne Weiteres möglich.
 
Werbung:
Laut Google kannst du z.B. den VLC Player direkt mit einer Videoquelle per Link starten. Einfach den Link zum VLC Player + file:// usw...
 
Die Lösung, die ich sehe, besteht darin, localhost den Zugriff auf das file://-Protokoll zu gestatten.

Nicht mehr taufrisch, aber so ähnlich wird es gehen:

- Links to local pages do not work - MozillaZine Knowledge Base




Abgesehen davon ist die einzige funktionierende Lösung, auf die ich bisher gekommen bin, ein Direktlink auf die Datei innerhalb des Docroot-Verzeichnisses. Also beispielsweise:

Code:
<a href="./videos/xyz.mpeg">Link</a>

Im Browser kann dann etwa der VLC mit dem Dateityp verknüpft werden. Um die Videodateien nicht tatsächlich im Docroot liegen haben zu müssen, bietet sich wohl auch unter Windows ein Symlink an. (Da gilt es vermutlich dennoch Zugriffsrechte zu beachten. Zumindest unter Linux.)

Ein Problem dabei ist allerdings, dass der Browser die Datei wohl „herunterlädt”, also gewissermaßen in einen anderen Ordner kopiert. Bei kleinen Dateien fällt das lokal nicht ins Gewicht, aber eine 1.4 GB-Datei dürfte einige Zeit brauchen, bis sie „startet“.

Alles nicht so schön.

Eine andere Lösung wäre es, auf dem Server einen VLC Streaming-Server zu starten und den Browser auf die entsprechende Outfile weiterzuleiten und diese (oder das Protokoll) wiederum auf Browserebene mit dem VLC zu verknüpfen. (Letzteres habe ich bisher nicht hinbekommen.)

Grob etwa so (habe mir das zusammenkopiert):

PHP:
$command = "vlc /home/marc/myfile.mpg"
  . " --daemon"
  . " --sout '#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://localhost:8080/test.sdp}' & echo \$!";

// Process id
$pid = shell_exec($command);

echo $pid;

Verbinden eines VLC-Clients (nicht per Browser):

Code:
$ vlc rtsp://localhost:8080/test.sdp

(Geht natürlich auch über das GUI, also „Datei → Öffnen“.)

Problem mit dieser Lösung: Der Stream ist über den Client nicht kontrollierbar (Spulen, Pausieren, …), was aber wahrscheinlich bloß am Protokoll oder an Einstellungen liegt, und der Stream-Server läuft als Daemon im Hintergrund, müsste also durch einen weiteren Konsolenaufruf von Hand über die PID beendet werden. (Keine Ahnung, wie das alles unter Windows geht.)



PS: Das Starten von GUI-Anwendungen per Apache/PHP-exec() unterliegt zumindest unter Linux auf Serverebene (Apache) diversen Einschränkungen und scheint nicht „einfach so“ möglich zu sein.

PPS: Ein anderer Ansatz wäre vielleicht noch ein Flashplayer. Zudem wäre es eine Möglichkeit, alle Daten als HTML-Datei vorzugenerieren und von Anfang an über file:// aufzurufen, nicht über [noparse]http://[/noparse].
 
Zuletzt bearbeitet:
Werbung:
@mermshaus
Vielen Dank dass du dir die Zeit genommen hast mir zu helfen. Ich habe mir die beiden Lösungen auch schon überlegt. Das file://-Protokoll freizugeben möchte ich nur wenn es gar keine andere Lösung mehr gibt, wenn es schon geblockt ist wird es auch einen Grund haben. Hatte keine Ahnung wie das mit dem VLC Stream funktioniert. Danke für die Tipps. Werde das ganze im neuen Jahr versuchen, habe im Moment leider keine Zeit dafür. Real Life...
 
Zurück
Oben