我在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");
?>
然后收到以下错误消息:
我做错了什么?什么是安装ffmpeg的确切方法?在php脚本中编写命令的确切方法是什么?如何在在线服务器中使用?还有其他更好的转换器吗?
-Thanks。
编辑:
当我使用以下行
时<?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");
?>
然后得到了与第一张照片相同的信息。
答案 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