このスクリプトを使用していますが、画像を作成できません。
私のファイルはここにあります。
を実行したことがないため、機能していません$cmd
。実際に実行するには、、、またはを$cmd
使用する必要があります。popen()
proc_open()
exec()
この機能を試してください。ffmpegがアクセス可能である限り、画像を生成する必要があります。Linuxでアクセスできるようにするには、Windowsのフォルダーに$path
ドロップします。windows/system32
または、Windowsのコントロールパネルの環境変数に追加します。
/ ** * ExtractThumb、ビデオからサムネイルを抽出します * *この関数は、ビデオをロードし、フレーム4から画像を抽出します *クリップの数秒 * @param $instring処理中のビデオへの入力パス * @param $outstring出力画像が保存されるパス * / 関数ExtractThumb($ in、$ out) {{ $ thumb_stdout; $ errors; $ retval = 0; //ファイルがすでに存在する場合は削除します if(file_exists($ out)){unlink($ out); } // ffmpegを使用して、ムービーからサムネイルを生成します $ cmd = "ffmpeg -itsoffset -4 -i $ in -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 $ out 2>&1"; exec($ cmd、$ thumb_stdout、$ retval); //処理のためにエラーをキューに入れます if($ retval!= 0){$ errors []="FFMPEGサムネイルの生成に失敗しました"; } if(!empty($ thumb_stdout)) {{ foreach($thumb_stdoutを$lineとして) {{ $lineをエコーします。"
\ n"; } } if(!empty($ errors)) {{ foreach($ errors as $ error) {{ $errorをエコーします。"
\ n"; } } }
$thumb_stdout
-CLIの場合と同じように出力を表示します。これは、ffmpegが実行していることの詳細を確認したり、機能していない場合にクラッシュする場所を確認したりするのに役立ちます。
$errors
-CLIがエラーコードで終了した場合(つまり、ffmpegがクラッシュした場合)、エラーが表示されます。
PHPプログラムは基本的に/usr/bin/ffmpeg
2回呼び出します。最初にコマンドラインでそれを試してください!あなたはできる
echo "<pre>$cmd</pre>"
PHPスクリプトが正確に何をしているのかを調べてから、コマンドラインでその正確なコマンドを試してください。
最初のコマンドは次のようになります
/usr/bin/ffmpeg -i /var/www/beta/clock.avi 2>&1
echo
これは、 sを配置する場所です。
// get the duration and a random place within that
$cmd = "$ffmpeg -i $video 2>&1";
echo "<pre>$cmd</pre>"
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
// get the screenshot
$cmd = "$ffmpeg -i $video -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
echo "<pre>$cmd</pre>"
$return = `$cmd`;
最初にffmpeg-phpをインストールします(http://ffmpeg-php.sourceforge.net/)
そして、この単純なコードを使用できます。
<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';
$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
$gd_image = $frame->toGDImage();
if ($gd_image) {
imagepng($gd_image, $thumbnail);
imagedestroy($gd_image);
echo '<img src="'.$thumbnail.'">';
}
}
?>