ホームページ >バックエンド開発 >PHPチュートリアル >ビデオの指定されたフレームをインターセプトして画像にする PHP メソッド
この記事は主に、ビデオの指定されたフレームを画像にインターセプトするためのphpの関連情報を詳しく紹介します。必要な友達はそれを参照してください
ビデオの指定されたフレームを画像にインターセプトするphpのffmpeg拡張子は完璧です。実装:
$movie = new ffmpeg_movie($video_filePath); $ff_frame = $movie->getFrame(1); $gd_image = $ff_frame->toGDImage(); $img="./test.jpg"; imagejpeg($gd_image, $img); imagedestroy($gd_image);
ただし、スマートフォンで撮影した動画は撮影方向の違いにより回転してしまい、動画に対してフレーム画像を横取りする際に回転情報を持つ動画があった場合、メタ情報が回転してしまうという問題が発生します。フレームも回転するので、キャプチャされた画像もそれに応じて回転されます。
その後、php ffmpeg 拡張機能は回転情報を知ることができません (php ffmpeg 拡張機能のドキュメント)が、ffmpeg コマンドラインを通じて取得できます:
/usr/local/ffmpeg/bin/ffprobe test.mp4 -show_streams | grep回転php を使用する 簡単なカプセル化は次のとおりです:
function get_video_orientation($video_path) { $cmd = "/usr/local/ffmpeg/bin/ffprobe " . $video_path . " -show_streams 2>/dev/null"; $result = shell_exec($cmd); $orientation = 0; if(strpos($result, 'TAG:rotate') !== FALSE) { $result = explode("\n", $result); foreach($result as $line) { if(strpos($line, 'TAG:rotate') !== FALSE) { $stream_info = explode("=", $line); $orientation = $stream_info[1]; } } } return $orientation; }
imagerotate() 関数を使用してスクリーンショットを回転します:
$movie = new ffmpeg_movie($video_filePath); $frame = $movie->getFrame(1); $gd = $frame->toGDImage(); if ($orientation = $this->get_video_orientation($video_filePath)) { $gd = imagerotate($gd, 360-$orientation, 0); } $img="./test.jpg"; imagejpeg($gd, $img); imagedestroy($gd_image);
最後に、すべてのプレーヤーとブラウザがビデオの向きを認識して自動的に回転できるわけではありません。必要に応じてビデオが回転します。これは ffmpeg コマンドで解決できます:
/usr/local/ffmpeg/bin/ffmpeg -i input.mp4 -vf 'transpose=3' -metadata:s :v:0rotate=0
概要: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
PHP に基づく Web サイト ディレクトリ スキャン インデックス ツールの例
以上がビデオの指定されたフレームをインターセプトして画像にする PHP メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。