欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php exec ffmpeg 不行 失败 无效 不能 生成文件 自己亲自做的 有大用

给一客户做PHPCMS的字段开发,实际上传视频转码功能,本机测试通过,UAT环境也通过。客户上传到生产环境后转码不执行了,UAT环境与生产环境一样,都是WIN2003+IIS6.

cmd 与ffmpeg.exe的权限都给了,everyone,iis,guest等,全部是完全控制,运行exec('ipconfig');可以正常输出用户IP信息,证明 cmd 权限没错,但是运行exec('ffmpeg.exe -i test.wmv test.mp4')这样的命令始终无法执行.可以排除ffmpeg.exe与视频文件的路径问题,相对路径与绝对路径都测试过了。




在 linux 下执行 下面的代码的目的是把mp4的某个帧截取成jpg

ffmpeg -i  123.mp4  -ss 2 -vframes 1 123.jpg

ffmpeg -i 123.mp4 -ss 2 -vframes 1 123.jpg
这两个命令都可以

但是
执行下面的php 文件就不行了
原来的php文件


<?php   error_reporting(E_ALL); 
system("ffmpeg -i 123.mp4 -ss 2 -vframes 1 123.jpg"); 
system("ffmpeg -i 123.mp4 -ss 2 -vframes 1 123.jpg");   
//system("ffmpeg -i 123.mp4 -y -f mjpeg -ss 0.1 -t 1 -s 100x150 123-2.jpg"); ?>

我的做法是第一步: ffmpeg 需要有匿名用户执行权([root@mail bin]# which ffmpeg

/usr/local/bin/ffmpeg
[root@mail bin]# chmod 777 /usr/local/ffmpeg/bin/ffmpeg
 
)

第二步 在ffmpeg 改成  /usr/local/ffmpeg/bin/ffmpeg (123.mp4,123.jpg可以不必绝对路径)

即新的 php文件

<?php   
error_reporting(E_ALL); 
system("/usr/local/ffmpeg/bin/ffmpeg -i 123.mp4 -ss 2 -vframes 1 123.jpg");
system("/usr/local/ffmpeg/bin/ffmpeg -i 123.mp4 -ss 2 -vframes 1 123.jpg");
//system("/usr/local/ffmpeg/bin/ffmpeg -i 123.mp4 -y -f mjpeg -ss 0.1 -t 1 -s 100x150 123-2.jpg"); ?>



普通分类: