我想要的MP3文件转换成OGG。 我尝试下面的代码
exec("/usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg",$output);
var_dump($output);
不过,这并不转换文件,它只返回array(0) { }
只需要一点点的执行时间。
但转换使用ssh命令时是成功的。
请给我的解决方案。
我想要的MP3文件转换成OGG。 我尝试下面的代码
exec("/usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg",$output);
var_dump($output);
不过,这并不转换文件,它只返回array(0) { }
只需要一点点的执行时间。
但转换使用ssh命令时是成功的。
请给我的解决方案。
这里有趣的事情,你要在它自己的进程,并在后台执行它,否则,你的PHP脚本将挂起,而等待转换完成。
编码:
passthru("nohup /usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbistestjohn4545454.ogg 1> /path/to/logfile.txt 2>&1 &");
请注意“的nohup”,并在年底的符号:这应该给你所需要的。 此外,您现在可以定期检查你的日志文件,以确保它在做什么,你想要什么。
最后,检查出这个问题创建一个进度条,如果你喜欢。
我有一个类似的问题一次,但我已经选择保存并读取一个Apache的可写文件夹中的文件(文件输入和输出转换后的文件),您还可以检查是否皈依通过读取目录alredy完成。
你可以检查你的PHP配置disabled_functions,看看EXEC不是吗? 您可能还需要启用所有错误报告 ,并尝试给exec()的一个简单的bash回声,看看它是如何去后。 如果一切顺利,然后检查是否使用了正确的文件,如杰米指出,工作目录可能是错误的之一,所以使用绝对路径或相对的,无论是最方便的。 检查什么是当前工作目录的Unix命令是pwd
。
编辑:此外, 高管还有另一个需要注意When safe mode is enabled, you can only execute files within the safe_mode_exec_dir
,所以一定要拥有一个良好的阅读手册其他问题。
感谢您的答复。 我用passthru()
而不是exec()
它工作正常。