您的位置:首页 > 编程语言 > PHP开发

PHP支持ffmpeg,便用ffmpeg命令处理视频,开启exec权限

2017-08-23 09:11 986 查看
··开始先说点我开发遇到的问题,我用的环境是IIS7.5+PHP5.4+MYSQL,系统是windows!要开发一个视频上传播放的功能,需要获取视频信息(宽高大小时间等等~),还是截视频帧做封面!

··然后我就想用ffmpeg处理,我用的是thinkphp 框架,搞了半天集成好了,提示系统没有安装ffmpeg,原来还要安装,又在网上找了一大圈!全试了遍,基本上都是修改php.ini文件,加几个dll文件到系统文件里,php_ffmpeg.dll加到PHP里,还是没用,然后可能是PHP和ffmpeg版本不匹配,然后找了版本一致的又试了下,还是不行,我当时要抓狂了!后来又看到网上的说用IIS不行,因为这个方法有用的是apache服务器!我又自己装了一个xampp集成环境,小试了一下,还是不行,因开发问题,还是不想用apache,就没有尝试了!

既然集成的不行,那我就用外部命令,因为这个不需要版本匹配(也不知道是不是真的需要匹配),反正也可以达到我的目的,在网上下载了ffmpeg的win64安装包(文章后面我会放上需要的软件,有需要的可以下载),解压文件夹放到D:\ffmpeg,如图:

就是这样,视频是我自己的,然后在系统环境变量path里加上bin的路径D:\ffmpeg\bin;,如图:

这个时候应该可以使用命令行执行了,win+R打开运行,输入cmd回车,我用ffmpeg的命令截取视频第一帧保存图片:ffmpeg -i d:\ffmpeg\test.mp4 -y -f image2 -t 0.001 -s 352x240 d:\ffmpeg\abcd.jpg

然后会输出一大堆东西,在看下d盘ffmpeg的目录下,此时多了一张abcd.jpg的图片

说明这个时候ffmpeg就安装好了!

最后我们就是要用这个命令在PHP环境来执行,首先在根目录下写一个indexs.php文件

<?php
exec("dir",$output,$return_val);
print_r($output);
print_r($return_val);
在网页上输入indexs.php的网址!Warning: exec(): Unable to fork,这个提示应该是没有用户权限,然后打开IIS管理器,找到应用程序池-》找到你的对应网站池-》高级设置-》

确定重启IIS服务器,再用网页打开indexs.php,如果数组里输出内容就成功了,如果提示:Warning: exec() has been disabled for security reasons

这就是PHP没有权限执行exec,找到PHP目录下的php.ini文件,safe_mode要关掉,disable_functions里把exec去掉,最好备份你修改的文件!

重启IIS服务器,看出数据输出内容,不提示报错说明成功了!具体方法怎么处理视频我还没做,这个相信也不难,我放几个我要用到的ffmpeg命令,如果后面需要我写的PHP处理视频代码,在下面留言!(本帖不保证所有都能成功,本人也是菜鸟一个!勿喷~)

ffmpeg代码(我用的都是绝对路径,以下命令我全测试过,保证没有问题!)

切视频第一帧保存图片
ffmpeg -i e:\girl.mp4 -y -f image2 -t 0.001 -s 352x240 e:\a.jpg

把视频的前30帧转换成一个Animated Gif
ffmpeg -i e:\girl.mp4 -vframes 100 -y -f gif e:\a.gif

截取指定时间的缩微图,-ss后跟的时间单位为秒
ffmpeg -i e:\girl.mp4 -y -f image2 -ss 28 -t 0.001 -s 350x240 e:\test.jpg

输出视频详细信息
ffprobe -v quiet -print_format json -show_format -show_streams e:\girl.mp4


ffmpeg安装文件:
http://download.csdn.net/download/ysjyygywfn/9946052
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  视频 php thinkphp ffmpeg