jpg php-upload in flv umwandeln und speichern

Acronis

Mitglied
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.

Er generiert zwar das flashmovie, aber ohne Bildinhalt.

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:
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:
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']))
     {
      $uploadd = $config[vdodir]."/".$vdoname;  					
      move_uploaded_file($_FILES['field_uploadfile']['tmp_name'], $uploadd);
      Ming_setScale(1.0);                    
	  $s = new SWFShape();
      $f = $s->addFill(new SWFBitmap(file_get_contents($uploadd))) ;
      $s->setRightFill($f);
  	  $s->drawLine(32, 0);
  	  $s->drawLine(0, 32);
  	  $s->drawLine(-32, 0);
  	  $s->drawLine(0, -32);
  	  $m = new SWFMovie();
  	  $m->setDimension(32, 32);
  	  $m->add($s);
  	  header('Content-type: application/x-shockwave-flash');
#  	  $m->output();
   	$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 bearbeitet:
Den einfachsten Weg duerfte hier wohl die Ming-Extension darstellen. Das Problem hierbei ist jedoch, dass diese wohl bei den wenigsten Hostern verfuegbar sein duerfte.
Ich hab mal kurz im PEAR-Archiv geschaut, konnte dort aber bei der Suche nach Flash keine Alternative finden.
 
Hallo und Danke für die Antwort!

Folgendes ist bereits installiert:

Code:
media-libs/ming 
     Available versions:  0.2a 0.2a-r1 0.2a-r2 0.2a-r3 [M]0.3.0
     Installed:           0.2a-r3[04:23:11 09.08.2006] python
     Homepage:            http://ming.sourceforge.net/
     Description:         An Open Source library for flash movie generation

Wie muss das dann aussehen?
 
Ich hab bisher nicht mit Ming rumgespielt, aber schau Dir doch mal die Doku dazu an. Den Link hab ich Dir ja vorhin schon gegeben. Da solltest Du eigentlich alle Informationen finden koennen die Du benoetigst.
 
PHP:
$vdoname=$vid.".".$ph;
             
if(isset($_FILES['field_uploadfile']['tmp_name']) && is_uploaded_file($_FILES['field_uploadfile']['tmp_name']))
     {
      $uploadd = $config[vdodir]."/".$vdoname;                      
      move_uploaded_file($_FILES['field_uploadfile']['tmp_name'], $uploadd);
      Ming_setScale(1.0);                    
      $s = new SWFShape();
      $f = $s->addFill(new SWFBitmap(file_get_contents($uploadd))) ;
      $s->setRightFill($f);
        $s->drawLine(32, 0);
        $s->drawLine(0, 32);
        $s->drawLine(-32, 0);
        $s->drawLine(0, -32);
        $m = new SWFMovie();
        $m->setDimension(32, 32);
        $m->add($s);
        header('Content-type: application/x-shockwave-flash');
        $m->output();


Ich benutze ja Ming, aber trotzdem gibt er das Bild nicht aus...
 
Zurück