那里有一个很好的图书馆,将用PHP拆分一个mp3

时间:2011-05-08 00:46:38

标签: php ffmpeg mp3

所以我有一个应用程序需要上传的歌曲,并允许用户购买它。我想创建一个用户可以预览的30秒剪辑,而不是让用户上传两个文件,我希望应用程序根据原始mp3创建30秒的mp3文件。我找到了这个library,我正在使用这个

    $oSplit=new CMP3Split(DIR_DOWNLOAD ."Made_To_Love.mp3",243,DIR_DOWNLOAD ."clips/{$rndString}.mp3",30,0);

但似乎并不总是产生30秒的剪辑

我也发现这个question正在使用ffmpeg,我不知道如何在php设置中使用。

任何想法或建议

2 个答案:

答案 0 :(得分:1)

该库基本上没用:它实际上甚至没有读取MP3的比特率来计算要输出多少文件。

看看这个:http://www.sourcerally.net/Scripts/20-PHP-MP3-Class

该课程应该能够用这样的东西提取:

  header('Content-type: audio/mp3');
  header('Content-disposition: attachment; filename="preview.mp3"');
  header('Cache-Control: no-cache');
  include_once('mp3.php');
  $path = '<filename to path>';
  $mp3 = new mp3($path);
  $mp3_1 = $mp3->extract(0,30);
  header('Content-length: ' . sizeof($mp3_1->str));
  echo $mp3_1->str;

你可以期待它很慢,并消耗大量内存:你可能最好使用像ffmpeg这样的东西来做切。

答案 1 :(得分:0)

从命令行尝试ffmpeg解决方案,如果你正常工作,只需在PHP中从命令行调用它。 shell_exec()可以做到这一点。如果您允许用户指定文件名,则需要转义shell参数。

由于这需要一点时间,因此考虑将这项工作传递给像gearman这样的队列系统可能是明智之举。