背景:
小程序项目中,需要使用到获取上传视频的第一帧作为封面图。查阅资料大部分介绍使用 ffmpeg 这个第三方应用。
centos下安装ffmpeg 是比较容易,这里不再赘述。
结合php 的系统函数调用来完成获取第一帧图片的方法。
由于这个项目是给多客户安装使用,当时设想是否能用php扩展来解决这个问题。注:即使使用扩展,也依然需要依赖服务器环境中有ffmpeg .
一查ffmpeg就傻眼了,扩展已经多年没有更新了。尝试装了官网上多个php_ffmpeg 都在编译的时候出现错误。
尝试了两天后放弃此方法。
https://www.cnblogs.com/jkklearn/p/6737467.html
这有一篇教程,讲述安装php_ffmpeg 扩展的文章,题主也再多个版本安装才安装成功。想了想以后客户没错使用程序都得如此麻烦的安装,立马抛弃。
回到使用php系统命令调取shell语句来实现第一帧图片的方法。很多朋友遇到这个问题是 php系统命令调用shell语句失败,无返回。phpinfo中查看并没有警用系统调用函数。这里涉及到一个linux用户权限的问题。nginx 或者apache的用户组,并不是root。为了安全考虑,我们也不能使用root来运行nginx或者apche. 尝试使用程序的安装目录下bing/ffmpeg 来调用,发现是允许的。
以下贴出代码,供大家查阅。
$str = "/sbin/ffmpeg/bin/ffmpeg -i ".$file." -y -f mjpeg -ss 3 -t 1 -s 200x200 ffmpeg.jpg";
ob_start();
passthru($str);
$info = ob_get_contents();
ob_end_clean();
大家一起讨论,还原讨论,以上仅是个人愚见,一起学习。起步可能比别人低,前进的步伐可不能再慢。下一篇内容再会。
个人公众号(欢迎订阅~学习探讨日常项目经验):