php用ffmpeg擴充套件擷取視訊第一幀的方法
阿新 • • 發佈:2018-11-05
- windows 或linux上要安裝ffmpeg擴充套件,安裝方法可以自行百度
- 通過執行外部命令的方式exec()實現,如果是本地視訊很方便,$tempfiles就是完整的視訊路徑;如果是post過來的視訊(僅限.mp4格式),無法用臨時檔案(.tmp)進行擷取,本人的用了個笨方法,先傳到本地來,獲取到.mp4的視訊路徑,再執行命令,如果有其他方法歡迎留言分享^^
/** * 擷取視訊第一幀 * * @param $file 視訊檔案 * @param $time 第幾幀 * @param $dir 臨時目錄 * @param $size 截圖尺寸 */ function getVideoCover($file,$time,$dir,$size) { $time = $time ? $time : '1'; //預設擷取第一秒第一幀 $size = $size ? $size : '348*470'; $fileName = getImgName(); //臨時視訊路徑,生成截圖後刪除 $tempfiles = $dir.$fileName.'.mp4'; $bool = move_uploaded_file($file, $tempfiles); $str = "ffmpeg -i ".$tempfiles." -y -f mjpeg -ss ".$time." -t 0.001 -s $size ".$dir.$fileName.'.jpg'; exec($str,$out,$status); return $fileName; }
注:ffmpeg只能擷取mp4格式的視訊檔案