所以我有一个应用程序需要上传的歌曲,并允许用户购买它。我想创建一个用户可以预览的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设置中使用。
任何想法或建议
答案 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这样的队列系统可能是明智之举。