最近做了一个项目需要用到FFMPEG 上传的视频文件截图和获取视频时长。首先安装完FFMPEG以后终端上直接测试截图和获取视频时长非常顺利的。但是到了PHP里面执行exec函数是始终无法执行ffmpeg 、没有任何报错。琢磨几天今天终于把问题解决了。为了像我这样遇到问题的网友有所帮助和以后避免这种低级错误、我就记下了。
首先一定要确保ffmpeg是否能成功的安装。我用的环境是centos7 和 php5.4 环境。
查一下ffmpeg是否安装成功。ffmpeg安装完了以后终端输入ffmpeg
出现这样的页面是正确的。出错的话就重新安装一下ffmpeg。
第一步成功以后试一下终端中能不能正常截图、我用的命令是:
// ffmpeg截图
/usr/bin/ffmpeg -i /home/video.mp4 -y -f image2 -ss 00:00:03 -vframes 1 /home/test/123.jpg
用的全是绝对路径。这一步如果截图成功我们就可以放心的去用php的exec函数来试一试、php能不能正常执行ffmpeg
$cmd = '/usr/bin/ffmpeg -i '.$updir/$upfileName.' -y -f image2 -ss 00:00:03 -vframes 1 /home/test/123.jpg 2>&1';
$result = exec($cmd);
但是到了这一步死活不能成功的截图了。。环境、配置、命令、代码都是没有问题的。。网上找了好多办法都说环境配置、php.ini 什么什么的。查了一下全都没问题。。今天才发现我没图片生成的目录没给写入的权限。。就一个目录权限问题折腾了我好几天。
后来我见了一个目录 test
mkdir test
然后给这个目录写入的权限
chmod 777 -R test
事情就完美解决了。获取视频长度还有ffmpeg的一些参数我就不写了、因为我参考的也是网上的一些方法。