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

VideoStreaming mit PHP und FTP ?!? :)

Hansii

Mitglied
Hallo.

Ist folgendes möglich: Ich habe eine Website auf dem Server "000.000.000.000" und einen FTP-Server erreichbar unter "111.111.111.111". Jetzt will ich auf meiner Website Videos anbieten (sprich man soll diese anschauen kommen => Copyright ist slebstverständlich geklärt). Diese Videos liegen allerdings auf dem FTP-Server. FTP mit PHP habe ich schon desöfteren gemacht, allerdings lediglich Dateiübertragung.

Meien Fragen:

1. Egal wie scheiße :) Gäbe es denn ÜBERHAUPT einen Ansatz dafür (muss mit PHP,SQL,JS,JQUERY lösbar sein) ?
2. Wie wäre dieser Ansatz?
3. Gäbe es alternativen ?

Also die Videos kann ich nicht alle auf meinem Webspace haben - einfach aus Platzgründen.

Danke :)
 
Werbung:
Werbung:
Aso einfaches HTTP ne leider nicht :( habe gerade geschaut, welche Protokolle ich alles nutzen kann:

FTP
FTPS
SFTP
WebDAV
SMB
rsync
SCP

Vermutlich siehts dann aber eher schlecht aus? Könnte ich nciht irgnedwie eine PHP-Zwischendatei erstellen, die die vom FTP lädt und diese Datei einfach als Ausgabequlle nutzen? Oder ist das nur in Verbindung eines Downloads möglich ?

Also in Richtung PHP Header ? :D
 
Bei diesem Protokollen kannst Du nur Daten kopieren/runterladen, nicht streamen. Du könntest also nur mittels PHP eine FTP-Verbindung öffnen, die Datei auf den Webspace runterladen, dann die Datei streamen, und danach wieder vom Webspace löschen wenn nötig.
 
Werbung:
ok, denn werde ich das wahrscheinlich machen. das blöde ist halt, dass der user warten muss während die datei gedownloadet wird. naja, dazu werde ich mir auch noch etwas einfallen lassen :) danke dir trotzdem :D
 
Und bevor du eine Datei doppelt oder dreifach vom FTP kopierst, solltest vor dem Kopiervorgang prüfen, ob die angeforderte Datei evtl. schon auf dem Webspace vorhanden ist. Ist dies der Fall, streamst eben die vorhandene Datei, ansonsten Datei vom FTP holen.

Nachtrag:
Damit die Datei aber nicht während eines Streamvorganges gelöscht wird, weil evtl. der Streamingvorgang bei einem anderen User, der die Datei schon angefordert hatte, beendet ist, solltest du irgendwie ein Flag setzen. Sei es in einer *.txt-Datei, oder einer DB.
 
Ja, ein Flag werde ich in einer DB setzen. Dann lassen ich einen CronJob täglich um 0 Uhr die Dateien löschen, die seit mindestens 1 Stunde nicht angerührt sind. das ich vorher prüfe ob eine datei schon vorhanden ist, ist ja eigenlich selbstverständlich :D
 
Werbung:
Warum kannst du die Videos nicht einfach auf einen Server packen der von außen erreichbar ist oder die Dateien einfach von außen erreichbar machen? Das würde dir so viel arbeit spaaren.
 
Das Problem ist, das ich auf dem Webspace nicht gerade viel Speicherplatz habe, leider :(:(


Jetzt habe ich mal ausprobiert wie lange es dauern würde (Datei ist 1 GB groß):

nach 30MB wird es abgebrochen. Why? :(

Hier das Skript:

PHP:
<?php

    $beginn = microtime(true);
  
    set_time_limit(0);

    include('ftp.php');
  
    $arr_Settings = array();
    $arr_Settings['HOST'] = '';
    $arr_Settings['USER'] = '';
    $arr_Settings['PW'] = '';
  
    $obj_FTP = new \protocol\ftp($arr_Settings);
  
    $obj_FTP->connect();
    $obj_FTP->login();
  
  
    $str_PathToFile = '';
  
  
  
    $obj_FTP->get('video.mp4',$str_PathToFile);
  
  

// Skript und Aktionen die gemessen werden sollen

$dauer = microtime(true) - $beginn;
echo "Verarbeitung des Skripts: ".$dauer." Sek.";
  
?>

Selbstverständlich ist das Settings-Array und der Path ausgefüllt, sonst würde es ja gar nicht erst funktionieren. Folgender Fehler:



Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
Das Problem ist, das ich auf dem Webspace nicht gerade viel Speicherplatz habe, leider :(:(


Jetzt habe ich mal ausprobiert wie lange es dauern würde (Datei ist 1 GB groß):

nach 30MB wird es abgebrochen. Why? :(

Hier das Skript:

PHP:
<?php

    $beginn = microtime(true);
 
    set_time_limit(0);

    include('ftp.php');
 
    $arr_Settings = array();
    $arr_Settings['HOST'] = '';
    $arr_Settings['USER'] = '';
    $arr_Settings['PW'] = '';
 
    $obj_FTP = new \protocol\ftp($arr_Settings);
 
    $obj_FTP->connect();
    $obj_FTP->login();
 
 
    $str_PathToFile = '';
 
 
 
    $obj_FTP->get('video.mp4',$str_PathToFile);
 
 

// Skript und Aktionen die gemessen werden sollen

$dauer = microtime(true) - $beginn;
echo "Verarbeitung des Skripts: ".$dauer." Sek.";
 
?>

Selbstverständlich ist das Settings-Array und der Path ausgefüllt, sonst würde es ja gar nicht erst funktionieren. Folgender Fehler:



Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Rufst du das Script über HTTP auf?
Dann liegt es wahrscheinlich daran:
http://www.php.net/manual/de/info.configuration.php#ini.max-execution-time

Beim Ausführen über SSH oder cronjobs gibt es meines Wissens kein Zeitlimit.
 
Werbung:
mit nem

PHP:
<?php
    set_time_limit(0);
?>

funktionierts leider auch nicht. Ja, ich rufe das teil gerade per http auf :(
 
Wenn das ganze Video ding etwas größeres werden soll, solltest du dir überlegen ob es nicht doch sinnvoll ist dir einen platz für deine Videos zu besorgen auf welchem du sie hochladen und über http oder irgendein anderes protokoll direkt aus dem browser heraus erreichen kannst.

Sag uns doch was genau der Zweck deiner Seite sein soll. Dann können wir dir sagen wie du dein Ziel am besten erreichen kannst.
 
Also, die Seite ist von einem Bekannten, der freier Journalist / Fotograph ist und viel filmt. Diese Filme möchte er über eine Website nach dem Login vom Benutzer zur Verfügung stellen. Da ich mich eigentlich mittlerweile doch ganz gut mit Websiten auskenne, habe ich Ihm angeboten diese zu erstellen. Soweit auch kein Problem, den Login usw. ist ja einfach umsetzbar. Das PRobelm ist, dass er seine Videos gerne weiterhin da ablegen möchte wie bisher - auf einem Cluddrive mit den oben genannten Protokollen. Allerdings ist auch der Webspace nur 5 GB was relativ schnell zu wenig ist. Habt ihr vielleicht Ideen, wie ich das umsetzen kann? Eigentlich ist alles kein Problem, bis auf das Streaming der Videos über FTP.
 
Werbung:
Ich sehe da weiterhin 2 Möglichkeiten:
a) Größeren Webspace besorgen, ggfs. auch einen betreuten Server. 5 GB Speicherplatz ist heutzutage auch eher wenig, es sollte sich schnell ein besseres Angebot finden lassen.
b) Videos zu Youtube hochladen, die dortigen Möglichkeiten zum Schutz von Videos nutzen und diese dann in die Webseite einbinden. Nachteil: Youtube denkt darüber nach solche Einbindungen kostenpflichtig zu machen. Andere Videoportale könnten aber ähnliches anbieten ..
 
Youtube scheint hier die beste lösung zu sein.

1. Du musst dich nicht um das Konvertieren kümmern.
2. Du verbrauchst keinen Speicherplatz auf deinem Server.
3. Weitere verbreitung der Videos.

Somit musst du allgemein weniger Programmieren.

Die warscheinlichkeit das Youtube das Einbinden von Videos kostenpflichtig macht ist zudem eher unwahrscheinlich, wenn aber auch nicht unmöglich.
 
Ich habe noch ein Server wo mehr Speicherplatz ist, allerdings möchte ich den Webspace aus besonderem Grund nicht dahin legen. Ich könnte die Videos aber dahin schieben, und diese wären dann per HTTP erreichbar. Wie sähe es denn dann aus @threadi du hattest danach mal gefragt ? :)
 
Werbung:
Dann musst du nichts mehr hin und her schieben. Du bindest die Videos entweder direkt per <video> tag ein oder spielst sie mittels eines Flash frontends wie z.b. https://code.google.com/p/swfobject/ einfach auf deiner Seite ab.
 
Zurück
Oben