SELFPHP: Version 5.7.0 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 


Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.10.2010, 15:37:16
Buche24 Buche24 ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Buche24 befindet sich auf einem aufstrebenden Ast
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(64128320);
        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($chCURLOPT_FILE$file);
            
curl_setopt($chCURLOPT_HEADER0);
            
curl_setopt($chCURLOPT_URL$url);
            
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
curl_setopt($chCURLOPT_COOKIEFILECOOKIE);
            
curl_setopt($chCURLOPT_COOKIEJARCOOKIE);
            
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>
Mit Zitat antworten
  #2  
Alt 16.10.2010, 15:44:35
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.047
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
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!
Mit Zitat antworten
  #3  
Alt 16.10.2010, 15:54:00
Buche24 Buche24 ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Buche24 befindet sich auf einem aufstrebenden Ast
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.
Mit Zitat antworten
  #4  
Alt 16.10.2010, 16:00:08
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.047
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: Video Coverter PHP Problem

Zitat:
Zitat von Buche24 Beitrag anzeigen
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' ); 
__________________
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!
Mit Zitat antworten
  #5  
Alt 16.10.2010, 16:19:53
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 36
Beiträge: 310
knight1 befindet sich auf einem aufstrebenden Ast
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Video Coverter PHP Problem

Zitat:
Zitat von Buche24 Beitrag anzeigen
... 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
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #6  
Alt 16.10.2010, 16:21:18
Buche24 Buche24 ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Buche24 befindet sich auf einem aufstrebenden Ast
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
Mit Zitat antworten
  #7  
Alt 16.10.2010, 16:23:10
Buche24 Buche24 ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Buche24 befindet sich auf einem aufstrebenden Ast
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
Mit Zitat antworten
  #8  
Alt 17.10.2010, 23:22:40
Buche24 Buche24 ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 29
Beiträge: 6
Buche24 befindet sich auf einem aufstrebenden Ast
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
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit php 3 Spalten Layout 007Rene HTML, CSS und JavaScript Help! 1 01.03.2007 13:44:26
Problem mit Anführungsstrichen in PHP und TXT file S3Ri0US PHP Grundlagen 3 18.11.2006 09:10:53
Problem mit javascript und php variable Esnabur PHP Grundlagen 2 25.07.2006 22:47:07
Problem mit Checkboxen und PHP TomRasmus PHP für Fortgeschrittene und Experten 1 16.03.2004 23:16:33
Seltsames Problem, das nur indirekt mit PHP zu tun hat Hiyanha PHP Grundlagen 7 30.06.2002 11:04:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:24:57 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt