我无法让 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."\"";
}
}
我认为我在转换本身的钱上是对的,但是表单在提交时只会无限加载。所以我猜测转换正在发生,但表单不知道何时完成。有什么想法吗?
最佳答案
使用 SoX - 声音处理的瑞士军刀。非常容易使用。
它是一个命令行工具而不是 PHP 库,因此要从 PHP 中使用,您需要执行 shell 命令并在代码中获取结果。我在几个项目中使用过它。
PHP 示例:
SoX 是一个跨平台(Windows、Linux、MacOS X 等)命令行实用程序,可以将各种格式的计算机音频文件转换为其他格式。它还可以对这些声音文件应用各种效果,并且作为额外的奖励,SoX 可以在大多数平台上播放和录制音频文件。
SoX 是非常成熟的项目!这是链接:http://sox.sourceforge.net/
以下是我为您搜索的一些示例:
http://www.thegeekstuff.com/2009/05/sound-exchange-sox-15-examples-to-manipulate-audio-files/
关于audio - ffmpeg 音频转换不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193119/