php截取視頻指定幀為圖片
截取視頻指定幀為圖片,php ffmpeg擴(kuò)展已經(jīng)完美實現(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ī)拍攝的視頻,由于拍攝方向不同,視頻會被旋轉(zhuǎn),并帶上meta信息rotate,當(dāng)你相對視頻截取frame圖片的時候,如果有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);
最后還有一個麻煩事,不是所有的播放器和瀏覽器都可對video識別orientation并自動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è)計有所幫助。
- PHP編程獲取音頻文件時長的方法【基于getid3類】
- 解析用PHP讀寫音頻文件信息的詳解(支持WMA和MP3)
- PHP獲取音頻文件的相關(guān)信息
- php利用ffmpeg提取視頻中音頻與視頻畫面的方法詳解
- Thinkphp5框架實現(xiàn)圖片、音頻和視頻文件的上傳功能詳解
- PHP 獲取視頻時長的實例代碼
- PHP基于ffmpeg實現(xiàn)轉(zhuǎn)換視頻,截圖及生成縮略圖的方法
- php使用FFmpeg接口獲取視頻的播放時長、碼率、縮略圖以及創(chuàng)建時間
- PHP從FLV文件獲取視頻預(yù)覽圖的方法
- PHP getID3類的使用方法學(xué)習(xí)筆記【附getID3源碼下載】
相關(guān)文章
PHP判斷遠(yuǎn)程圖片或文件是否存在的實現(xiàn)代碼
本篇文章主要是對PHP判斷遠(yuǎn)程圖片或文件是否存在的實現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02
PHP遠(yuǎn)程連接oracle數(shù)據(jù)庫操作實現(xiàn)方法圖文詳解
這篇文章主要介紹了PHP遠(yuǎn)程連接oracle數(shù)據(jù)庫操作實現(xiàn)方法,結(jié)合圖文形式詳細(xì)分析了php連接Oracle數(shù)據(jù)庫的相關(guān)配置、實現(xiàn)方法、遇到的問題、解決方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-04-04
php中file_get_contents()函數(shù)用法實例
在本文中我們給大家整理了關(guān)于php中file_get_contents()函數(shù)的相關(guān)用法,需要的朋友們學(xué)習(xí)參考下。2019-02-02
VIM中設(shè)置php自動縮進(jìn)為4個空格的方法詳解
本篇文章是對VIM中設(shè)置php自動縮進(jìn)為4個空格的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP下編碼轉(zhuǎn)換函數(shù)mb_convert_encoding與iconv的使用說明
mb_convert_encoding這個函數(shù)是用來轉(zhuǎn)換編碼的。原來一直對程序編碼這一概念不理解,不過現(xiàn)在好像有點開竅了。2009-12-12

