1

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

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

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

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

请给我解决方案。

4

4 回答 4

3

有趣的是,您想在自己的进程和后台执行此操作,否则您的 PHP 脚本将在等待转换完成时挂起。

编码:

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

注意末尾的“nohup”和&符号:这些应该可以满足您的要求。此外,您现在可以定期检查您的日志文件,以确保它正在执行您想要的操作。

最后,如果您愿意,请查看此问题以创建进度条。

于 2013-02-19T13:09:19.057 回答
1

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

于 2013-02-19T12:43:43.190 回答
1

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

编辑:此外,exec有另一个警告When safe mode is enabled, you can only execute files within the safe_mode_exec_dir,因此请务必仔细阅读手册以了解其他问题。

于 2013-02-19T12:46:02.143 回答
-1

感谢您的答复。我使用passthru()而不是exec()它工作正常。

于 2013-02-19T13:11:01.487 回答