如何通过PHP将mp3转换为ogg?

时间:2013-06-02 00:47:51

标签: php audio converter

我在localhost中使用windows 7和xampp。我想通过php脚本将mp3音频转换为ogg音频。我下载了'ffmpegConverter_v0.2'压缩文件,其中文件夹结构为:

ffmpegConverter_v0.2
  --consoleConversor
      --consoleConversor
      --consoleConversor.exe
      --ffmpeg.dll

  --consoleMonitor
      --consoleMonitor
      --consoleMonitor.exe
      --ffmpeg.dll
      --Queue.xml

  --serviceConversor
      --ffmpeg.dll
      --serviceConversor
      --serviceConversor.exe

  --serviceMonitor
      --ffmpeg.dll
      --Queue.xml
      --serviceMonitor
      --serviceMonitor.exe

  --LEEME.txt
  --README.txt

我将'ffmpegConverter_v0.2'文件夹,mp.php和'a.mp3'保存在同一文件夹中,并在mp.php中使用以下代码:

<?php    
exec("ffmpegConverter_v0.2\serviceConversor\serviceConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>

然后收到以下错误消息: enter image description here

我做错了什么?什么是安装ffmpeg的确切方法?在php脚本中编写命令的确切方法是什么?如何在在线服务器中使用?还有其他更好的转换器吗?

-Thanks。

编辑:

当我使用以下行

<?php
 exec("ffmpegConverter_v0.2\consoleConversor\consoleConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>
然后我收到了这条消息 enter image description here

我也试过这个:

<?php   
exec("c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe serviceConversor.exe"); 
exec("ffmpegConverter_v0.2\serviceConversor\serviceConversor.exe -i a.mp3 -vcodec libtheora -acodec libvorbis ap.ogg");
?>

然后得到了与第一张照片相同的信息。

5 个答案:

答案 0 :(得分:3)

忘记serviceConversor事。

获取FFmpeg build for Windows(与您的架构相匹配的静态构建应该是避免其他DLL /等问题的良好开端)。

然后使用exec

<?php
    $retCode = exec('C:\\path\\to\\ffmpeg.exe -y -i file.mp3 -acodec libvorbis file.ogg');
?>

不要忘记逃避反斜杠(\\);你没有问题。

exec将返回FFmpeg的返回码(我将其放在$retCode这里),为了成功,返回0。

正如一些人所说,您可以添加-aq选项来设置VBR转码的OGG输出质量。

libvorbis是在静态FFmpeg版本中构建的;我刚刚使用ffmpeg.exe -codecs检查了

DEA.L. vorbis               Vorbis (decoders: vorbis libvorbis )

其中DE表示此编解码器支持解码和编码。

答案 1 :(得分:2)

其中一项应该有效:

ffmpeg -y -i a.mp3 -acodec libvorbis -aq 50 output.ogg
ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg

答案 2 :(得分:2)

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

代码:

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

答案 3 :(得分:1)

我能给你的最佳建议:

  

如果有README文件,则某些内容无效。读吧!

话虽如此,您正试图对serviceConversor.exe运行命令。这不会起作用,因为这是一个Windows服务,需要先安装它。还有另一个名为consoleConverser.exe的文件,正如README文件所说,'可以在没有安装的情况下执行。'。

我假设你已经安装了ffmpeg,这是必需的

所以你的第一个选择就是尝试执行正确的命令。请记住,我不熟悉这种对话,所以我不知道这是否是正确的命令。我来这里是为了帮助解决错误信息。

<?php    
exec("ffmpegConverter_v0.2\consoleConversor\consoleConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>

现在如果失败了,你仍然可以尝试自述文件的第二部分。这是安装Windows服务。这必须手动完成,解释in the ms knowledgebase

  

不幸的是,serviceConversor只在Windows XP上测试过,我无法在Windows 7系统上安装它,但也许你有更多的运气。

现在,这表示当您使用installutil serviceConversor.exe进入ffmpegConverter_v0.2\serviceConversor\文件夹时,可以直接致电cmd,但很可能会收到一条消息,指出无法找到installutil。在这种情况下,您可以使用完整路径运行它,这通常是其中之一,具体取决于您的.NET版本以及运行窗口7 32或64.

c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe

所以在我的情况下,完整的命令将是(来自serviceConversor文件夹)

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe serviceConversor.exe

答案 4 :(得分:1)

MP3-&GT; OGG

ffmpeg -i input.mp3 -ab 6400 output.ogg

OGGDEC.EXE OGG-&gt; MP3

OGGDEC.EXE myfile.ogg --stdout | LAME.EXE -V5 --vbr-new - myfile.mp3