2011-05-08 59 views
0

所以我有一个应用程序需要上传的歌曲,并允许用户购买它。我还想创建一个30秒的剪辑,用户可以预览,而是让用户上传两个文件,我希望应用程序根据原始的mp3创建30秒的mp3文件。我发现这个library我使用这样是否有一个好的图书馆,那里将分裂一个MP3与PHP

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

它,但它似乎并不总是产生一个30秒的剪辑

,我也发现了这个question这是使用ffmpeg的,我不知道如何使用一个PHP设置。

任何意见或建议,

回答

0

试试在命令行ffmpeg的解决办法,如果你得到它的工作只是在PHP中调用它的命令行。 shell_exec()可以做到这一点。如果您允许用户指定文件名,您将希望转义shell参数。

由于这需要一些时间,因此研究将这项工作传递给像齿轮人员这样的队列系统可能是明智的。

+1

如果网站流量很低,这将会很有效。只是总是确保将数据传入。(他们命名为上传'rm/-rf'哈哈)这个sql注入命令行。 – Ben 2011-05-08 01:00:06

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这样的东西去做印章可能会更好。

相关问题