2011-12-14 22 views
3

複数のPNGからFLVビデオを生成しようとしていますが、出力ビデオが壊れているように見えます。mingを使用してpng画像からflvビデオを作成する

<?php 
$video = new SWFMovie(); 
$video->setDimension(640, 360); 

$img = new SWFShape(); 
$png = fopen("/home/damiano/a.dbl", "rb"); 
$img->addFill(new SWFBitmap($png)); 
fclose($png); 

$video->add($img); 

header('Content-type: application/x-shockwave-flash'); 
$video->output(); 
?> 

ブラウザは(もないミリ秒)何も表示しても、VLCプレーヤーなどをしません。動画ファイルを取得するには:

curl 'http://localhost/ming.php' > vid.flv 

pngをインポートすると何が問題になりますか?なぜ私はビデオを見ることができないのですか?私は何が欠けていますか?

+0

テキストエディタで開くと「vid.flv」には何が含まれますか? –

+0

flvのMIMEタイプはvideo/x-flvです。私は明を使用していませんが、あなたのPHPコードはswfファイルを生成するようですが、ビデオではありません(application/x-shockwave-flashはswfのMIMEタイプです)。 VLCや他のビデオプレイヤーは通常swfファイルを再生できませんが、Flash Playerで再生できます。 –

答えて

0

私はこのコードを使用しています。

 //Muse addition below - creates flv and thumbnail of file and uploads it   
      $target_file_name = replaceexts($new_file_name,"flv");    
      $flvtarget ="$imagedir".$target_file_name; 
      //echo substr(sprintf('%o', fileperms('../3/uploades/video')), -4); 
     // @chmod($configfile, 0777); 
     // //echo "../3/uploades/video/".$new_file_name; 
      //$permission = is_writeable($configfile); 
      move_uploaded_file($_FILES['myfile']['tmp_name'], "../3/uploades/video/".$new_file_name); 
      // @chmod($configfile, 0777); 
      $imgtarget ="$imagedir".replaceexts($new_file_name,"jpg");   
      //video 
     //Original: 
        // $cmd = "/usr/bin/ffmpeg -v 0 -i $upload_path -acodec pcm_s16le -s 320x240 -b 512k -ab 128k -ar 44100 -bt 40000k $flvtarget"; 
     //Options Meaning: 
     // Input file options 
     // -v 0 -- Logging verbosity level -- I guess 0 means - "Silent" 

     // Output file options: 
     // -acodec pcm_s16le: force audio codec to the selected (pcm_s16le) -- WHy? 
     // -s 320x320 -- frame size 
     // -b 512k -- video bit rate 
     // -ab 128k -- audio bitrate 

     //Added: 

     // -ar 44100 -- set the audio sampling frequency. Default is 44100. So shouldn't be necessary to add this option, but apparently is necessary, to force it. 


      //exec($cmd); 

      //video 
    //  $cmd = "/usr/bin/ffmpeg -v 0 -i $upload_path -acodec pcm_s16le -s 320x240 -b 512k -ab 128k $flvtarget"; 
    // $cmd = "/usr/bin/ffmpeg -v 0 -i $upload_path -acodec pcm_s16le -s vga -b 512k -ab 128k -aspect 4:3 -target flv $flvtarget";     



    $cmd = "/usr/bin/ffmpeg -i $upload_path -s 320x240 -b 512k -ab 128k -acodec libmp3lame -ar 22050 -f flv $flvtarget"; 
      exec($cmd); 
      //thumb 
      $cmd = "/usr/bin/ffmpeg -i $upload_path -deinterlace -an -ss 2 -t 00:00:01 -r 1 -y -s 80x60 -vcodec mjpeg -f mjpeg $imgtarget 2>&1"; 
      exec($cmd); 
関連する問題