【问题标题】:conversion from mp3 to ogg using php使用 php 从 mp3 转换为 ogg
【发布时间】:2013-02-04 03:18:02
【问题描述】:

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

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

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

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

请给我解决方案。

【问题讨论】:

  • 很难立即给出解决方案,您是否给了 PHP 一个体面的执行时间以成功结束? set_time_limit 变量。
  • @Heapy 只需要一点执行时间。
  • 网络服务器用户可能没有足够的权限,你检查了吗?
  • @Heapy 是的,我将 777 放到所有文件中,但它保持不变。
  • 可能还想尝试一下绝对网址,以防万一它试图从另一个目录加载文件

标签: php ffmpeg exec mp4 ogg


【解决方案1】:

这里很有趣,你想在它自己的进程中执行它并且在后台,否则你的 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 创建进度条。

【讨论】:

    【解决方案2】:

    你能检查一下你在 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】:

      感谢您的回复。我用passthru() 代替exec(),效果很好。

      【讨论】:

      • 可能想看看我的答案,输出一个日志文件,在后台运行,还有一个进度条。我创造了和你几乎完全相同的东西。不需要点赞,希望对你有用。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-20
        • 2013-12-08
        • 2012-08-06
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多