1. 程式人生 > >php用ffmpeg擴充套件擷取視訊第一幀的方法

php用ffmpeg擴充套件擷取視訊第一幀的方法

  1. windows 或linux上要安裝ffmpeg擴充套件,安裝方法可以自行百度
  2. 通過執行外部命令的方式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格式的視訊檔案