Deine Leidenschaft ist die Unterwasserfoto-grafie?
Dann ist Qozido genau das Richtige für Dich!
Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!
www.qozido.de
CronJob-Service
bei SELFPHP mit ...
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden
16.10.2010, 15:37:16
Anfänger
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Video Coverter PHP Problem
Hallo,
hab ein Problem mit einer PHP-Datei (siehe unten). Das Skript sollte FLV-Dateien von YouTube per cURL downloaden und anschließend mit FFMpeg in eine MP3-Datei umgewandelt werden. Der Download per cURL und die anschließende Löschung der temporären Videodatei funktioniert, doch die Konvertierung mit FFMpeg klappt nicht. Wo in meinem Skript ist denn der Fehler, sitze schon ziemlich lange davor und kann das Problem nicht lösen. Das ganze läuft auf einem Debian root-Server und FFMpeg läuft! safe_mode ist auch off laut info.php. Bin um jede Hilfe dankbar.
MfG
buche24
YouTubeToMp3Converter.class.php
PHP-Code:
<?php // Conversion Class class YouTubeToMp3Converter { // Private Fields private $_songFileName = '' ; private $_flvUrl = '' ; private $_audioQualities = array( 64 , 128 , 320 ); private $_tempVidFileName ; private $_vidSrcTypes = array( 'source_code' , 'url' ); // Constants const _TEMPVIDDIR = 'videos/' ; const _SONGFILEDIR = 'mp3/' ; const _FFMPEG = 'ffmpeg.exe' ; #region Public Methods function __construct () { } function DownloadVideo ( $youTubeUrl ) { $file_contents = file_get_contents ( $youTubeUrl ); if ( $file_contents !== false ) { $this -> SetSongFileName ( $file_contents ); $this -> SetFlvUrl ( $file_contents ); if ( $this -> GetSongFileName () != '' && $this -> GetFlvUrl () != '' ) { return $this -> SaveVideo ( $this -> GetFlvUrl ()); } } return false ; } function GenerateMP3 ( $audioQuality ) { $qualities = $this -> GetAudioQualities (); $quality = ( in_array ( $audioQuality , $qualities )) ? $audioQuality : $qualities [ 1 ]; $exec_string = self :: _FFMPEG . ' -i ' . $this -> GetTempVidFileName (). ' -y -acodec libmp3lame -ab ' . $quality . 'k ' . $this -> GetSongFileName (); exec ( $exec_string ); $this -> DeleteTempVid (); return is_file ( $this -> GetSongFileName ()); } function ExtractSongTrackName ( $vidSrc , $srcType ) { $name = '' ; $vidSrcTypes = $this -> GetVidSrcTypes (); if ( in_array ( $srcType , $vidSrcTypes )) { $vidSrc = ( $srcType == $vidSrcTypes [ 1 ]) ? file_get_contents ( $vidSrc ) : $vidSrc ; if ( $vidSrc !== false && eregi ( 'eow-title' , $vidSrc )) { $name = end ( explode ( 'eow-title' , $vidSrc )); $name = current ( explode ( '">' , $name )); $name = ereg_replace ( '[^-_a-zA-Z,"\' :0-9]' , "" , end ( explode ( 'title="' , $name ))); } } return $name ; } #endregion #region Private "Helper" Methods private function SaveVideo ( $url ) { $this -> SetTempVidFileName ( time ()); $file = fopen ( $this -> GetTempVidFileName (), 'w' ); $ch = curl_init (); curl_setopt ( $ch , CURLOPT_FILE , $file ); curl_setopt ( $ch , CURLOPT_HEADER , 0 ); curl_setopt ( $ch , CURLOPT_URL , $url ); curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt ( $ch , CURLOPT_COOKIEFILE , COOKIE ); curl_setopt ( $ch , CURLOPT_COOKIEJAR , COOKIE ); curl_exec ( $ch ); curl_close ( $ch ); fclose ( $file ); return is_file ( $this -> GetTempVidFileName ()); } private function DeleteTempVid () { if ( is_file ( $this -> GetTempVidFileName ())) { unlink ( $this -> GetTempVidFileName ()); } } #endregion #region Properties public function GetSongFileName () { return $this -> _songFileName ; } private function SetSongFileName ( $file_contents ) { $vidSrcTypes = $this -> GetVidSrcTypes (); $trackName = $this -> ExtractSongTrackName ( $file_contents , $vidSrcTypes [ 0 ]); $this -> _songFileName = (!empty( $trackName )) ? self :: _SONGFILEDIR . preg_replace ( '/_{2,}/' , '_' , preg_replace ( '/ /' , '_' , preg_replace ( '/[^A-Za-z0-9 _-]/' , '' , $trackName ))) . '.mp3' : '' ; } public function GetFlvUrl () { return $this -> _flvUrl ; } private function SetFlvUrl ( $file_contents ) { $vidUrl = '' ; if ( eregi ( 'fmt_url_map' , $file_contents )) { $vidUrl = end ( explode ( '&fmt_url_map=' , $file_contents )); $vidUrl = current ( explode ( '&' , $vidUrl )); $vidUrl = current ( explode ( '%2C' , $vidUrl )); $vidUrl = urldecode ( end ( explode ( '%7C' , $vidUrl ))); } $this -> _flvUrl = $vidUrl ; } public function GetAudioQualities () { return $this -> _audioQualities ; } private function GetTempVidFileName () { return $this -> _tempVidFileName ; } private function SetTempVidFileName ( $timestamp ) { $this -> _tempVidFileName = self :: _TEMPVIDDIR . $timestamp . '.flv' ; } public function GetVidSrcTypes () { return $this -> _vidSrcTypes ; } #endregion } ?>
index.php
PHP-Code:
<?php echo '<?xml version="1.1" encoding="iso-8859-1"?>' ; ?> <!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="en"> <head> <title>Converter</title> <style type="text/css"> body { text-align:center; font:13px Verdana,Arial; margin-top:50px; } p { margin:15px 0; font-weight:bold; } form { width:450px; margin:0 auto; padding:15px; border:1px solid #ccc; } form input[type="text"] { width:385px; } form p { margin:10px 0; font-weight:normal; } h6 { margin-top: -14px; } </style> </head> <body> <h2>You<span style="color: #FF0084">Tube</span> Converter</h2> <?php // Execution settings ini_set ( 'max_execution_time' , 0 ); ini_set ( 'display_errors' , 0 ); // On form submission... if ( $_POST [ 'submit' ]) { // Instantiate converter class include 'YouTubeToMp3Converter.class.php' ; $converter = new YouTubeToMp3Converter (); // Print "please wait" message and preview image $vidID = $vidTitle = '' ; $urlQueryStr = parse_url ( trim ( $_POST [ 'youtubeURL' ]), PHP_URL_QUERY ); if ( $urlQueryStr !== false && !empty( $urlQueryStr )) { $kvPairs = explode ( '&' , $urlQueryStr ); foreach ( $kvPairs as $v ) { $kvPair = explode ( '=' , $v ); if ( $kvPair [ 0 ] == 'v' ) { $vidID = $kvPair [ 1 ]; break; } } echo '<div id="preview" style="display:block"><p>Bitte warten - MP3 wird erstellt</p>' ; echo '<p><img src="http://img.youtube.com/vi/' . $vidID . '/1.jpg" alt="preview image" /></p>' ; echo '<p>' . $converter -> ExtractSongTrackName ( trim ( $_POST [ 'youtubeURL' ]), 'url' ). '</p></div>' ; flush (); } // Main Program Execution if ( $converter -> DownloadVideo ( trim ( $_POST [ 'youtubeURL' ]))) { echo ( $converter -> GenerateMP3 ( $_POST [ 'quality' ])) ? '<p>Success!</p>' : '<p>Fehler beim erstellen der MP3!</p>' ; } else { echo '<p>MP3 konnte nicht erstellt werden!</p>' ; } } ?> <form action="<?php echo $_SERVER [ 'PHP_SELF' ]; ?> " method="post"> <p>Bitte gib deinen YouTube Link hier ein:</p> <p><input type="text" name="youtubeURL" /></p> <p><i>(z.B., "<span style="color: #FF0084">http://www.youtube.com/watch?v=HMpmI2F2cMs</span>")</i></p> <p><input type="submit" name="submit" value="Erstelle deine MP3" /></p> </form> <script type="text/javascript"> window.onload = function() { if (document.getElementById('preview')) { document.getElementById('preview').style.display = 'none'; } }; </script> </body> </html>
16.10.2010, 15:44:35
Administrator
Registriert seit: Jul 2004
Beiträge: 3.047
AW: Video Coverter PHP Problem
Hallo und willkommen hier im Forum!
Was genau klappt nicht? Welche Fehlermeldung erhältst Du? Schalte die Fehleranzeige ein bzw. höher.
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
16.10.2010, 15:54:00
Anfänger
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
AW: Video Coverter PHP Problem
Ich bekomme bis jetzt keinen Fehler das ist ja das problem! Unter Windows und Xampp funzt das wunderbar. Nur bei meinem Server und Linux scheitert es.
16.10.2010, 16:00:08
Administrator
Registriert seit: Jul 2004
Beiträge: 3.047
AW: Video Coverter PHP Problem
Zitat:
Zitat von
Buche24
Ich bekomme bis jetzt keinen Fehler das ist ja das problem! ...
Ich schrieb ja auch: Fehleranzeige einschalten - steht bei Dir auf OFF!
Füge folgende Zeilen an den Anfang Deines Scriptes ein:
PHP-Code:
error_reporting (- 1 );
ini_set ( 'display_errors' , 1 );
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
16.10.2010, 16:19:53
Junior Member
Registriert seit: May 2003
Ort: Trier
Alter: 36
Beiträge: 310
AW: Video Coverter PHP Problem
Zitat:
Zitat von
Buche24
... und anschließend mit FFMpeg in eine MP3-Datei umgewandelt werden. ...
Mir ist neu dass eine MP3-Datei auch einen Video-Stream enthalten kann. Ich dachte immer das seien reine Audio-Dateien.
Kai aka Knight1
16.10.2010, 16:21:18
Anfänger
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
AW: Video Coverter PHP Problem
Strict Standards: Only variables should be passed by reference in /var/www/YouTubeToMp3Converter.class.php on line 60
Strict Standards: Only variables should be passed by reference in /var/www/YouTubeToMp3Converter.class.php on line 62
16.10.2010, 16:23:10
Anfänger
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
AW: Video Coverter PHP Problem
Strict Standards: Only variables should be passed by reference in /var/www/YouTubeToMp3Converter.class.php on line 117
Strict Standards: Only variables should be passed by reference in /var/www/YouTubeToMp3Converter.class.php on line 120
Notice: Use of undefined constant COOKIE - assumed 'COOKIE' in /var/www/YouTubeToMp3Converter.class.php on line 79
Notice: Use of undefined constant COOKIE - assumed 'COOKIE' in /var/www/YouTubeToMp3Converter.class.php on line 80
Notice: Undefined index: quality in /var/www/index.php on line 86
17.10.2010, 23:22:40
Anfänger
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
AW: Video Coverter PHP Problem
Danke für eure schnellen Antworten. Es lag wohl nicht am Script sondern am FFMpeg. Jetzt läuft fast alles!
Also nochmal Danke
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Themen-Optionen
Ansicht
Linear-Darstellung
Forumregeln
Es ist Ihnen nicht erlaubt , neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt , auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt , Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt , Ihre Beiträge zu bearbeiten.
HTML-Code ist aus .
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:24:57 Uhr.