php截取視頻指定幀為圖片,_PHP教程

來源:互聯網
上載者:User

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);

然而問題來了,智能手機拍攝的視頻,由於拍攝方向不同,視頻會被旋轉,並帶上meta資訊rotate,當你相對視頻截取frame圖片的時候,如果有rotate資訊的視頻,frame也是旋轉的,因此你需要將截取的圖片相應的旋轉。

然後php ffmpeg擴充並無法獲知rotation資訊(php ffmpeg擴充文檔),但可以通過ffmpeg命令列擷取:

/usr/local/ffmpeg/bin/ffprobe test.mp4 -show_streams | grep rotate
用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);

最後還有一個麻煩事,不是所有的播放器和瀏覽器都可對video識別orientation並自動rotate,如果你想對視頻進行旋轉,可通過ffmpeg命令解決:

/usr/local/ffmpeg/bin/ffmpeg -i input.mp4 -vf 'transpose=3' -metadata:s:v:0 rotate=0

以上就是本文的全部內容,希望對大家學習php程式設計有所協助。

http://www.bkjia.com/PHPjc/1127878.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127878.htmlTechArticlephp截取視頻指定幀為圖片, 截取視頻指定幀為圖片,php ffmpeg擴充已經完美實現: $movie = new ffmpeg_movie($video_filePath);$ff_frame = $movie-getFrame(1...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.