欢迎各位兄弟 发布技术文章
这里的技术是共享的
给一客户做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
) 第二步 在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"); ?>