2011-05-08 19 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這樣的東西去做印章可能會更好。

相關問題