[Funktion] jpg php-upload in flv umwandeln und speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] jpg php-upload in flv umwandeln und speichern

    Hallo,

    ich habe ein kleines Problem und suche nach tagelangen rumprobieren Hilfe.

    Und zwar habe ich eine "upload.php" siehe unten, mit der kann ich Filme(mpg,wmv...etc.) hochladen und als flv konvertieren...

    So, jetzt möchte ich aber auch Bildateien (z.B. jpg) in flv umkonvertieren und diese als Standbild mit dem flvplayer.swf ausgeben.

    Es funktioniert einfach nicht Es kommt auch keine Fehlermeldung... Es müsste doch wenigstens das Bild hochladen, aber nichtmal das funktioniert.

    Ich bin mit meinem Lateien am Ende.

    Ich stelle mal die original Funktion zur Verfügung und darunter und darunter meine veränderte. Vielleicht es dann leichter den Fehler zu finden...

    Vielen Dank für alle Helfer in Voraus!

    Original Funktion:

    PHP-Code:
    if($_POST[upload_final]!="")
    {
    if(
    $_FILES['field_uploadfile']['tmp_name']==""$err="Please provide the video location.";
    if(
    $err=="" && $_FILES['field_uploadfile']['tmp_name']!="")
        {
        
    $p=$_FILES['field_uploadfile']['name'];
        
    $pos=strrpos($p,".");
        
    $ph=strtolower(substr($p,$pos+1,strlen($p)-$pos));
        
    /* Space in Megabytes (MB) */
         
    $space round($_FILES['field_uploadfile']['size']/(1024*1024));
         
         if(
    $config['enable_package']=="yes")
         { 
    check_subscriber($space); }
         
           if((
    $ph!="mpg" && $ph!="avi" && $ph!="mpeg" && $ph!="wmv" && $ph!="rm" && $ph!="dat"
           || 
    $space>$config[max_video_size])
               
    $err="Invalid Video Format."; }

           if(
    $err=="")
            {
            
    $sql="insert into video set
            UID=
    $_SESSION[UID],
            title='
    $_REQUEST[field_myvideo_title]',
            description='
    $_REQUEST[field_myvideo_descr]',
            keyword='
    $_REQUEST[field_myvideo_keywords]',
            channel='0|
    $_REQUEST[listch]|0',
            space = '
    $_REQUEST[space]',
            addtime='"
    .time()."',
            adddate='"
    .date("Y-m-d")."',
            vkey='"
    .mt_rand()."',
            type='
    $_REQUEST[field_privacy]',
            filehome='
    $_REQUEST[p]'";
            
    $conn->execute($sql);
            
    $vid=mysql_insert_id();
            
    $vdoname=$vid.".".$ph;
                 
            if(isset(
    $_FILES['field_uploadfile']['tmp_name'])
            && 
    is_uploaded_file($_FILES['field_uploadfile']['tmp_name']))
               {
                
    $ff $config[vdodir]."/".$vdoname;
                if(
    move_uploaded_file($_FILES['field_uploadfile']['tmp_name'], $ff))
                {    
    $mov = new ffmpeg_movie($ff);
                    
    video_to_frame($ff,$vid,&$mov,$listch[0]);
                    
    $duration=$mov->getDuration();
                    
      
    exec("$config[ffmpeg] -i $config[vdodir]/$vdoname 
      -acodec mp3 -ar 22050 -ab 32 -f flv 
    $config[flvdodir]/".$vid.".flv");

                }   } 

    Meine veränderte Funktion:

    PHP-Code:
    if($_POST[upload_final]!="")
    {
    if(
    $_FILES['field_uploadfile']['tmp_name']==""$err="Please provide the video location.";
    if(
    $err=="" && $_FILES['field_uploadfile']['tmp_name']!="" 
    && $_FILES['field_uploadfile']['type'] == "image/jpg")
        {
        
    $p=$_FILES['field_uploadfile']['name'];
        
    $pos=strrpos($p,".");
        
    $ph=strtolower(substr($p,$pos+1,strlen($p)-$pos));
        
    /* Space in Megabytes (MB) */
         
    $space round($_FILES['field_uploadfile']['size']/(1024*1024));
         
         if(
    $config['enable_package']=="yes")
         { 
    check_subscriber($space); }
         
           if((
    $ph!="mpg" && $ph!="avi" && $ph!="mpeg" && $ph!="wmv" && $ph!="rm" && $ph!="dat"
           || 
    $space>$config[max_video_size])
               
    $err="Invalid Video Format."; }

           if(
    $err=="")
            {
            
    $sql="insert into video set
            UID=
    $_SESSION[UID],
            title='
    $_REQUEST[field_myvideo_title]',
            description='
    $_REQUEST[field_myvideo_descr]',
            keyword='
    $_REQUEST[field_myvideo_keywords]',
            channel='0|
    $_REQUEST[listch]|0',
            space = '
    $_REQUEST[space]',
            addtime='"
    .time()."',
            adddate='"
    .date("Y-m-d")."',
            vkey='"
    .mt_rand()."',
            type='
    $_REQUEST[field_privacy]',
            filehome='
    $_REQUEST[p]'";
            
    $conn->execute($sql);
            
    $vid=mysql_insert_id();
            
    $vdoname=$vid.".".$ph;
                 
    if(isset(
    $_FILES['field_uploadfile']['tmp_name']) 
    && 
    is_uploaded_file($_FILES['field_uploadfile']['tmp_name'
    && 
    is_uploaded_file($_FILES['field_uploadfile']['type'] == "image/jpg")))
       {
        
    Ming_setScale(1.0);
           
    $s = new SWFShape();
           
    $f $s->addFill(new SWFBitmap($config[vdodir]."/".$vdoname));
           
    $s->setRightFill($f);
           
    $s->drawLine(6400);
           
    $s->drawLine(0480);
           
    $s->drawLine(-6400);
           
    $s->drawLine(0, -480);
           
    $m = new SWFMovie();
           
    $m->setDimension(640480);
           
    $m->add($s);
           
    header('Content-type: application/x-shockwave-flash');
           
    $m->save($config[vdodir]."/".$vdoname);            
        
    $ff $config[vdodir]."/".$vdoname;

        if(
    move_uploaded_file($_FILES['field_uploadfile']['tmp_name'], $ff))
            {
            
    $mov = new ffmpeg_movie($ff);
            
    video_to_frame($ff,$vid,&$mov,$listch[0]);
            
    $duration=$mov->getDuration();
            
            
    exec("$config[ffmpeg] -i $config[vdodir]/$vdoname 
            -acodec mp3 -ar 22050 -ab 32 -f flv 
    $config[flvdodir]/".$vid.".flv");        
        }} 
    Zuletzt geändert von acroonix; 07.11.2006, 10:45.

  • #2
    PHP-Code:
    if(isset($_FILES['field_uploadfile']['tmp_name']) 
       && 
    is_uploaded_file($_FILES['field_uploadfile']['tmp_name'
       && 
    is_uploaded_file($_FILES['field_uploadfile']['type'] == "image/jpg"))) 
    erkläre bitte die bedeutung dieser zeile mit eigenen worten.

    übrigens, stell mal das error_reporting hoch, kann sehr sinnvoll sein.

    Kommentar


    • #3
      Danke für die Antwort

      Wenn die temponäre File gesetzt ist und geuploaded ist und es eine jpg Datei ist
      Ich habe vorerst mal den Filme upload aus dem code entfernt...

      Achja, es kommt keine Fehlermeldung. Das Script läuft durch.

      Kommentar


      • #4
        [...] und es eine jpg Datei ist
        das stimmt nicht. die dritte bedingung ist unfug und dein error_reporting ist immer noch nicht hochgesetzt, denn dieser würde eine meldung nach der anderen spucken.

        Kommentar


        • #5
          Ich habe jetzt

          PHP-Code:
          error_reporting(E_ALL);
          ini_set('display_errors'TRUE); 
          gesetzt und

          PHP-Code:
          && is_uploaded_file($_FILES['field_uploadfile']['type'] == "image/jpg"
          gelöscht. Nun kommt folgende Fehlermeldung:


          Fatal error: swfbitmap() [<a href='function.swfbitmap'>function.swfbitmap</a>]: Unrecognised file type in /srv/www/web1/html/test/upload.php on line 89

          Kommentar


          • #6
            was ist zeile 89?
            findest du das horizontale gescrolle nicht nervig?

            Kommentar


            • #7
              @acroonix
              bitte deine postings anpassen gemäß regeln => http://www.php-resource.de/forum/sho...threadid=50454

              danke.
              Kissolino.com

              Kommentar


              • #8
                Hallo,

                sorry wegen den scrolling, aber ich hab hier eine sehr große Auflösung und bei mir musste man nicht scrollen. Habe es jetzt angepasst.

                In der Zeile 89 ist zu finden:

                PHP-Code:
                $f $s->addFill(new SWFBitmap($config[vdodir]."/".$vdoname)); 
                Die Funktion SWFBitmap ist doch schon in PHP impletiert oder?

                Gruß

                Kommentar


                • #9
                  evtl. erwartet die funktion den inhalt einer datei, und nicht den pfad dorthin?

                  Kommentar


                  • #10
                    Also das heißt, ich müsste die Datei erst speichern und dann SWFBitmap laufen lassen?

                    Kommentar


                    • #11
                      nein, aber schau dir doch die beispiele aus dem manual an!

                      Kommentar


                      • #12
                        Also anstatt:

                        PHP-Code:
                         $s = new SWFShape();
                               
                        $f $s->addFill(new SWFBitmap($config[vdodir]."/".$vdoname));
                               
                        $s->setRightFill($f);
                               
                        $s->drawLine(6400);
                               
                        $s->drawLine(0480);
                               
                        $s->drawLine(-6400);
                               
                        $s->drawLine(0, -480);
                               
                        $m = new SWFMovie();
                               
                        $m->setDimension(640480);
                               
                        $m->add($s);
                               
                        header('Content-type: application/x-shockwave-flash');
                               
                        $m->save($config[vdodir]."/".$vdoname); 
                        So?

                        PHP-Code:
                        $m = new SWFMovie();
                          
                        $m->setDimension(640480);
                          
                        $m->add(new SWFBitmap(fopen($config[vdodir]."/".$vdoname"rb")));

                          
                        header('Content-type: application/x-shockwave-flash');
                          
                        $m->save($config[vdodir]."/".$vdoname); 

                        Kommentar


                        • #13
                          nein, fopen liefert nicht den inhalt einer datei, sondern nur einen zeiger darauf. schau nach SWFBitmap().

                          Kommentar


                          • #14
                            PHP-Code:
                            $f $s->addFill(new SWFBitmap(file_get_contents($_FILES['field_uploadfile']['tmp_name']))) ; 
                            So ?

                            er generiert die swf, aber sie ist leer und es gibt keine Fehlermeldung...

                            Kommentar


                            • #15
                              ich bin mir nicht sicher, ob man aus einer datei über tmp_name lesen kann. evtl. noch irgendwo ablegen (tust du ja sowieso weiter unten), kannst sie danach auch wieder löschen.
                              Zuletzt geändert von penizillin; 07.11.2006, 11:46.

                              Kommentar

                              Lädt...
                              X