2011-11-19 122 views
0

我无法获得在我的网站上工作的ffmpeg音频转换。这个想法是文件在网站上传时应该被转换。ffmpeg音频转换不起作用

我这有我上传的形式确定音频文件的格式上:

if(isset($_POST['audio']) && $_POST['audio'] != ''){ 
       $ext1 = substr($_POST['audio'], -4); 

这是我想出来的最好的转换M4A等MP3:

if(isset($_POST['audio']) && $_POST['audio'] != ''){ $file = $_POST['audio'];  if($ext1==".m4a"){ $call="/usr/local/bin/ffmpeg -i ".$file." -ab 192k -f -acodec mp3";} 
$convert = (popen("start /b ".$call, "r")); pclose($convert); 

的问题是,它不会转换。 ffmpeg的路径是正确的。

现在我可能会对此感到满意,但如果有一个简单的解决方案,我很乐意听到它。

编辑。

有了这个:

if(isset($_POST['audio']) && $_POST['audio'] != ''){ 
    $file = $_POST['audio']; 
        $ext1 = substr($_POST['audio'], -4); /*get the last 4 chars*/ 
        $mp3 = echo 'mp3'; 
if($ext1=".m4a"){ 
"/usr/local/bin/ffmpeg -i \"". $file . "\" -ab 192k -y -f mp3 \"".ext1.$mp3."\""; 
} 
} 

,我认为我是对的上转换自己的钱,但如果提交的形式只是用来加载infinitly。所以我猜测转换正在发生,但表单不知道何时完成。有关于此的任何想法?

回答

1

使用SoX--声音处理的瑞士军刀。非常容易使用。

这是一个不是PHP库的命令行工具,因此要使用PHP库,您需要执行shell命令并在代码中获取结果。我在很少的项目中使用过它。

实施例用PHP:

SOX是跨平台(Windows,Linux和MacOS X的,等等)的命令行实用程序,可以转换的计算机的音频文件的各种格式在为其他格式。它还可以对这些声音文件应用各种效果,并且作为额外的好处,SoX可以在大多数平台上播放和录制音频文件。

SoX是非常成熟的项目!这里是链接:http://sox.sourceforge.net/

下面是一些例子我用Google搜索你: http://www.thegeekstuff.com/2009/05/sound-exchange-sox-15-examples-to-manipulate-audio-files/

+0

我用袜也非常有用的程序。 – Flinth