# jpg php-upload in flv umwandeln und speichern



## Acronis (7. November 2006)

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:


```
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:


```
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");		
	}}
```


----------



## Dennis Wronka (7. November 2006)

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.


----------



## Acronis (7. November 2006)

Hallo und Danke für die Antwort!

Folgendes ist bereits installiert:


```
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?


----------



## Dennis Wronka (7. November 2006)

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.


----------



## Acronis (7. November 2006)

```
$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...


----------

