php截取視頻指定幀為圖片
截取視頻指定幀為圖片,php ffmpeg擴(kuò)展已經(jīng)完美實(shí)現(xiàn):
$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);
然而問題來了,智能手機(jī)拍攝的視頻,由于拍攝方向不同,視頻會(huì)被旋轉(zhuǎn),并帶上meta信息rotate,當(dāng)你相對視頻截取frame圖片的時(shí)候,如果有rotate信息的視頻,frame也是旋轉(zhuǎn)的,因此你需要將截取的圖片相應(yīng)的旋轉(zhuǎn)。
然后php ffmpeg擴(kuò)展并無法獲知rotation信息(php ffmpeg擴(kuò)展文檔),但可以通過ffmpeg命令行獲?。?/p>
/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()函數(shù)就可以旋轉(zhuǎn)截圖:
$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);
最后還有一個(gè)麻煩事,不是所有的播放器和瀏覽器都可對video識別orientation并自動(dòng)rotate,如果你想對視頻進(jìn)行旋轉(zhuǎn),可通過ffmpeg命令解決:
/usr/local/ffmpeg/bin/ffmpeg -i input.mp4 -vf 'transpose=3' -metadata:s:v:0 rotate=0
以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)php程序設(shè)計(jì)有所幫助。
- PHP編程獲取音頻文件時(shí)長的方法【基于getid3類】
- 解析用PHP讀寫音頻文件信息的詳解(支持WMA和MP3)
- PHP獲取音頻文件的相關(guān)信息
- php利用ffmpeg提取視頻中音頻與視頻畫面的方法詳解
- Thinkphp5框架實(shí)現(xiàn)圖片、音頻和視頻文件的上傳功能詳解
- PHP 獲取視頻時(shí)長的實(shí)例代碼
- PHP基于ffmpeg實(shí)現(xiàn)轉(zhuǎn)換視頻,截圖及生成縮略圖的方法
- php使用FFmpeg接口獲取視頻的播放時(shí)長、碼率、縮略圖以及創(chuàng)建時(shí)間
- PHP從FLV文件獲取視頻預(yù)覽圖的方法
- PHP getID3類的使用方法學(xué)習(xí)筆記【附getID3源碼下載】
相關(guān)文章
php將數(shù)據(jù)庫導(dǎo)出成excel的方法
有時(shí)寫程序時(shí)后臺要求把大量數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中,比如考試成績、電話簿等一般都是存放在excel中的數(shù)據(jù),這時(shí)我們可把excel導(dǎo)出成csv文件,然后通過以下程序即可批量導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫中2010-05-05PHP轉(zhuǎn)盤抽獎(jiǎng)接口實(shí)例
這篇文章主要介紹了PHP轉(zhuǎn)盤抽獎(jiǎng)接口的實(shí)現(xiàn)方法,實(shí)例分析了隨機(jī)抽獎(jiǎng)接口的實(shí)現(xiàn)原理與對應(yīng)數(shù)據(jù)庫操作的技巧,需要的朋友可以參考下2015-02-02