Połączyłem skrypt, który wyprowadza 30-sekundowy klip z pliku MP3 w locie. Jeśli chcesz zapisać plik, prawdopodobnie jedna z pozostałych opcji przy użyciu klasy/biblioteki będzie najlepsza. Ale jeśli chcesz tylko pobierać/pobierać podgląd, w locie może być lepiej. Z pewnością pozwoli zaoszczędzić miejsce na dysku twardym. Przetestuj na http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/.
Oto kod, ale głębsze wyjaśnienie można znaleźć na moim blogu.
$getID3 = new getID3();
$id3_info = $getID3->analyze($filename);
list($t_min, $t_sec) = explode(':', $id3_info['playtime_string']);
$time = ($t_min * 60) + $t_sec;
$preview = $time/30; // Preview time of 30 seconds
$handle = fopen($filename, 'r');
$content = fread($handle, filesize($filename));
$length = strlen($content);
if (!$session->IsLoggedIn()) {
$length = round(strlen($content)/$preview);
$content = substr($content, $length/3 /* Start extraction ~10 seconds in */, $length);
}
header("Content-Type: {$id3_info['mime_type']}");
header("Content-Length: {$length}");
print $content;
don'y wiem, czy coś się zmieniło w lib getID3 albo "błąd w twoim kodzie: nie ma elementu length w tablicy id3_info. Powinien to być łańcuch odtwarzania. – latata
Link jest zepsuty przy okazji. –
Naprawiono link. Powinno być już dobrze. –