#1 30. Juli 2010 cURL | Videodownload von YouTube sehr langsam + Anschlussprobleme Hey, hab mir einen kleinen YouTube Videodownloader in PHP mit cURL geschrieben nur muss ich dabei feststellen, dass die Geschwindigkeit doch wirklich zu wünschen übrig lässt... Hab in der ersten Sekunde einen Speed von ~2MB/s und anschließend ~220kb/s. ( Läuft auf vHost und die Bandbreite steht auf jeden Fall zur Verfügung ) Jetzt ist die Frage ob das eine Grenze von YouTube selbst ist oder ob ich da noch irgendwas drehen kann. Folgende cURLOPTS: PHP: curl_setopt ( $cURL , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt ( $cURL , CURLOPT_AUTOREFERER , true ); curl_setopt ( $cURL , CURLOPT_FOLLOWLOCATION , true ); curl_setopt ( $cURL , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8" ); curl_setopt ( $cURL , CURLOPT_COOKIEJAR , "/dev/null" ); curl_setopt ( $cURL , CURLOPT_FILE , $fp ); Grüße + Multi-Zitat Zitieren
#2 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam Das ist ganz normal, zumindest lokal bei mir so. Am anfang immer fullspeed und danach wird gedrosselt. Man muss ja normalerweiße auch nicht schneller runterladen, als man den Film anschauen kann. Zu deinem Code: Warum setzt du CURLOPT_COOKIEJAR explizit auf /dev/null? Wenn dich die Cookies eh nicht interessieren, dann brauchst du die Option ja gar nicht setztn. + Multi-Zitat Zitieren
#3 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam // "/dev/null" vollkommen richtig für laufzeitgebundene cookies. stimmt alles. youtube limitiert den download je nach anbindung. mit dsl6k kommst du bei youtube ned (bzw. selten) über 100kb/s da lädst du anfangs fullspeed (zum buffern) und dann langsamer. + Multi-Zitat Zitieren
#4 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam Das mit dem COOKIEJAR mach ich weil ich mit dem cURL handle zwei Requests starte.... Erstmal die normale YouTube Seite wo ich dann die Informationen rausziehe und anschließend das Video. Dachte mir dass YouTube darauf vielleicht achtet und mir ansonsten den Download nicht gestattet. Hab gelesen dass beim Angeben von "/dev/null" als COOKIEJAR, er das COOKIE intern bei weiteren Aufrufen verwendet, aber halt nicht in eine Datei speichert. Das ist ja genau das was ich brauche. Und der Pfad scheint auch zu funktionieren. Zumindest wird kein /dev/null im Webroot oder sonstwo angelegt und cURL verhält sich so wie ich das will... also fast Ich wunder mich nur weil filsh.net hat teilweise eine Geschwindigkeit von 6-7 MB/s beim Herunterladen. Ist das dann deren Cache oder haben die eine spezielle Vereinbarung mit YouTube oder so? Grüße + Multi-Zitat Zitieren
#5 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam Eine Möglichkeit wäre ja das Video mehrmals neu Buffern zu lassen, indem du zur ungebufferten Stelle vorspulst. Wichtig wäre dann halt immer das aktuell Gelesene per Codec zu analysieren und die Länge festzustellen. Ist aber nur eine Theorie + Multi-Zitat Zitieren
#6 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam Ja da hab ich auch schon dran rumüberlegt. Man könnte ja per exec() mehrere PHP Prozesse starten und jeden jeweils ein Fragment runterladen lassen. Die Kommandozeilenversion von cURL scheint auch ein Parameter "--continue-at <bytes>" zu besitzen. Das PHP-Modul anscheinend leider nicht. Welche Funktionen würdet Ihr denn für die elegantesten einer solchen Umsetzung halten? exec/php/curl exec/curl exec/wget ??? Grüße + Multi-Zitat Zitieren
#7 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam du kannst den header ja manuell setzen. PHP: curl_setopt ( $ch1 , CURLOPT_HTTPHEADER , array( 'Range: 0-10000' )); curl_setopt ( $ch2 , CURLOPT_HTTPHEADER , array( 'Range: 10000-20000' )); usw, sollte eigl. klappen. + Multi-Zitat Zitieren
#8 30. Juli 2010 AW: cURL | Videodownload von YouTube sehr langsam Danke aber leider hat YouTube sich da selbst was gebastelt. Per Firebug hab ich rausgefunden, dass dem "videoplayback"-Aufruf der Parameter "begin=<msec>" als zweiter paramter mitübergeben wird. Ich werde hier editieren wenn ichs geschafft hab damit einen parallelel Download zu bauen. //edit: hat jemand eine idee wie ich das herunterladen an der passenden stelle wieder abbreche? bzw. wie finde ich die passende stelle? Glaube nicht dass die überall feste bitraten in den video und audio streams haben... einfach hochrechnen geht also nicht + Multi-Zitat Zitieren