이 글에서는 동영상의 지정된 프레임을 사진으로 가로채기 위한 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
요약: 위 내용은 이 글의 전체 내용으로, 모든 분들의 공부에 도움이 되길 바랍니다.
관련 추천:
위 내용은 PHP는 지정된 비디오 프레임을 그림으로 가로채는 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!