使用php从mp3转换为ogg

时间:2013-02-19 12:30:49

标签: php ffmpeg exec mp4 ogg

我想将mp3文件转换为ogg。我尝试了以下代码

exec("/usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg",$output);
var_dump($output);

但是它没有转换文件,只返回array(0) { } 它只需要一点执行时间。

但是使用ssh命令时转换成功。

请给我解决方案。

4 个答案:

答案 0 :(得分:3)

有趣的是,您希望在其自己的流程中执行此操作,并在背景中执行 ,否则您的PHP脚本将在等待转换完成时挂起。

代码:

passthru("nohup /usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbistestjohn4545454.ogg 1> /path/to/logfile.txt 2>&1 &");

注意" nohup"和最后的&符号:这些应该给你你需要的东西。此外,您现在可以定期检查日志文件,以确保它能够执行您想要的操作。

最后,如果您愿意,请查看this question以创建进度条。

答案 1 :(得分:1)

我有一个类似的问题,但我选择在apache可写文件夹中保存和读取文件(输入文件和输出转换文件) 您还可以通过读取该目录来检查转换是否已完成。

答案 2 :(得分:1)

你能检查PHP上的disabled_functions配置,看看exec是不存在吗?此外,您可能希望启用所有error reporting,然后尝试使用简单的bash echo执行exec()并查看它是如何进行的。如果一切顺利,那么检查你是否正在使用正确的文件,正如Jamie指出的那样,工作目录可能是错误的,所以使用绝对路径或相对,无论什么是最方便的。用于检查当前工作目录的Unix命令是pwd

修改另外,exec还有另一个警告When safe mode is enabled, you can only execute files within the safe_mode_exec_dir所以请务必仔细阅读manual以了解其他问题。

答案 3 :(得分:-1)

感谢您的回复。我使用了passthru()而不是exec(),它运行正常。