7

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

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");
?>

然后收到以下错误消息: 在此处输入图像描述

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

-谢谢。

编辑:

当我使用以下行时

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

然后我收到了这条消息 在此处输入图像描述

我也试过这个:

<?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");
?>

然后得到与第一张图片相同的消息。

4

5 回答 5

3

忘记那serviceConversor件事。

获取适用于 Windows 的 FFmpeg 构建(与您的体系结构匹配的静态构建应该是避免其他 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 表示此编解码器支持解码和编码。

于 2013-06-13T17:39:54.167 回答
2

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

编码:

passthru("/usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbistestjohn4545454.ogg 1> /path/to/logfile.txt 2>&1 &");
于 2013-06-13T07:44:19.980 回答
2

其中之一应该工作:

ffmpeg -y -i a.mp3 -acodec libvorbis -aq 50 output.ogg
ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg
于 2013-06-02T04:25:48.190 回答
1

MP3->OGG

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

OGGDEC.EXE OGG->MP3

OGGDEC.EXE myfile.ogg --stdout | LAME.EXE -V5 --vbr-new - myfile.mp3
于 2013-06-13T06:18:19.397 回答
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服务。这必须手动完成,这在 ms 知识库中进行了解释。

不幸的是,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
于 2013-06-07T06:51:01.090 回答