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格式的视频文件

你可能感兴趣的:(PHP)