PHPでビデオファイル(.mov
、.mp4
)を指定してサムネイル画像プレビューを生成する方法はありますか?
3 に答える
解決策 #1 (古い) (非推奨)
最初に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.'">';
}
}
?>
説明:このプロジェクトはバイナリ拡張ファイルを使用しています。これは非常に古く、最後の更新は 2008 年でした。そのため、または.so
の新しいバージョンでは動作しない可能性があります。FFMpeg
PHP
解決策 #2 (Update 2018) (推奨)
最初にPHP-FFMpeg
プロジェクトをインストールします ( https://github.com/PHP-FFMpeg/PHP-FFMpeg )
(インストールのために実行するだけです: composer require php-ffmpeg/php-ffmpeg
)
次に、この単純なコードを使用できます。
<?php
require 'vendor/autoload.php';
$sec = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($movie);
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds($sec));
$frame->save($thumbnail);
echo '<img src="'.$thumbnail.'">';
説明:より新しく、より現代的なプロジェクトであり、最新バージョンのFFMpeg
とで動作しPHP
ます。proc_open()
PHP関数に必要であることに注意してください。
2つの方法が思い浮かびます。
人気のあるffmpegのようなコマンドラインツールを使用しますが、それを取得するには、ほとんどの場合、独自のサーバー(または非常に優れたサーバー管理者/ホスティング会社)が必要です。
LongTailビデオプレーヤー用の「screenshoot」プラグインを使用して、手動のスクリーンショットを作成し、サーバー側のスクリプトに送信できるようにします。