>  기사  >  백엔드 개발  >  PHP는 지정된 비디오 프레임을 그림으로 가로채는 방법을 구현합니다.

PHP는 지정된 비디오 프레임을 그림으로 가로채는 방법을 구현합니다.

墨辰丷
墨辰丷원래의
2018-06-02 11:00:222272검색

이 글에서는 동영상의 지정된 프레임을 사진으로 가로채기 위한 PHP 관련 정보를 주로 소개합니다. 필요한 친구들은 참고해도 됩니다.

동영상의 지정된 프레임을 사진으로 가로채는 기능이 완벽하게 구현되었습니다. 구현:

$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 | Rotatephp를 사용하여 간단한 캡슐화는 다음과 같습니다.

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

요약: 위 내용은 이 글의 전체 내용으로, 모든 분들의 공부에 도움이 되길 바랍니다.

관련 추천:

phpXML 파일에 데이터를 추가하는 간단한 예 공유

PHP 기반 웹 사이트 디렉토리 검색 색인 도구 예

PHP 블록 쿼리 구현 방법 분석

위 내용은 PHP는 지정된 비디오 프레임을 그림으로 가로채는 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.