ホームページ  >  記事  >  バックエンド開発  >  ビデオの指定されたフレームをインターセプトして画像にする PHP メソッド

ビデオの指定されたフレームをインターセプトして画像にする PHP メソッド

墨辰丷
墨辰丷オリジナル
2018-06-02 11:00:222259ブラウズ

この記事は主に、ビデオの指定されたフレームを画像にインターセプトするための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 XML ファイルにデータを追加する簡単な例の共有

PHP に基づく Web サイト ディレクトリ スキャン インデックス ツールの例

PHP ブロック クエリ実装方法の分析

以上がビデオの指定されたフレームをインターセプトして画像にする PHP メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。