2009-09-10 16 views
17

Czy są jakieś sposoby automatycznego przycinania MP3 przesłanego na stronę WWW do 30 sekund (lub innej długości) w PHP? Jeśli nie, czy istnieją jakieś dobre usługi stron trzecich, które można zintegrować (jawnie z użytkownikiem), aby osiągnąć ten sam efekt?Automatyczne przycinanie pliku MP3 w języku PHP

Dzięki.

Odpowiedz

19

Możesz wypróbować MP3 Class na PHPClasses. Oferuje on następujący przykład:

require_once './class.mp3.php'; 
$mp3 = new mp3; 
$mp3->cut_mp3('input.mp3', 'output.mp3', 0, -1, 'frame', false); 

W tym przypadku, „ramka” może być podstawiona „drugi” oparcie pocięto na czasie.

2

W Debianie/Ubuntu spróbuj zainstalować mpgtx:

apt-get install mpgtx 

mptsplit input.mp3 [00:00:00-00:00:30] -o output.mp3 

Jestem pewien, że znajdziesz też mpgtx dostępny w innych drobnych dystrybucji Linuksa, lub po prostu zainstalować ze źródeł.

2

Miałem problemy z przetwarzaniem niektórych plików mp3 z klasą MP3 i mpgtx. Najlepszą opcją jest tutaj ffmpeg, jak sądzę. This page ma kilka dobrych przykładów na dzielenie plików multimedialnych za pomocą ffmpeg.

3

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; 
+2

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

+0

Link jest zepsuty przy okazji. –

+0

Naprawiono link. Powinno być już dobrze. –

0

użyłem PHP MP3 dla mojego projektu.

<?php 
//Extract 30 seconds starting after 10 seconds. 
$path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3_1 = $mp3->extract(10,30); 
$mp3_1->save('newpath.mp3'); 
?> 

Twoim przypadku można użyć extract(0,30) lub extract(30,60).

+0

To dobry skrypt, ale zdaję sobie sprawę, że jest on dostępny na licencji LGPL, a moim zdaniem nie jest tak elastyczny jak inne licencje. – Antony

+0

@Antony, LGPL jest dość elastyczny i jeśli nie zmienisz czegoś w samej bibliotece, nie musisz robić nic specjalnego poza dystrybucją pliku tekstowego licencji z pakietem. Można go również używać w komercyjnych projektach. –

0

https://github.com/falahati/PHP-MP3

PHP-MP3 jest prosta biblioteka dla odczytu i manipulowania MPEG Audio (MP3).

Instalacja:

composer require falahati/php-mp3 

Cut MPEG Audio:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3"); 
0
//Merge two files 
$path = 'path.mp3'; 
$path1 = 'path1.mp3'; 
$mp3 = new PHPMP3($path); 

$newpath = 'path.mp3'; 
$mp3->striptags(); 

$mp3_1 = new PHPMP3($path1); 
$mp3->mergeBehind($mp3_1); 
    $mp3->striptags(); 

$mp3->setIdv3_2('01','Track Title','Artist','Album','Year','Genre','Comments','Composer','OrigArtist','Copyright','url','encodedBy'); 

$mp3->save($newpath); 

//Extract 30 seconds starting after 10 seconds. 
    $path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3_1 = $mp3->extract(10,30); 
$mp3_1->save('newpath.mp3'); 

//Extract the exact length of time 
$path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3->setFileInfoExact(); 
echo $mp3->time; 
//note that this is the exact length! 

źródło: https://github.com/thegallagher/PHP-MP3/blob/master/README.md