Domanda

Esistono modi per tagliare automaticamente un MP3 caricato su un sito Web a 30 secondi (o qualche altra lunghezza) in PHP? In caso contrario, esiste qualche buon servizio di terze parti che potrebbe essere integrato (in modo trasparente per l'utente) per ottenere lo stesso effetto?

Grazie.

È stato utile?

Soluzione

Puoi provare la Classe MP3 su PHPClasses. Presenta il seguente esempio:

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

In questo caso, il 'frame' può essere sostituito con 'secondo' per basare il taglio su un intervallo di tempo.

Altri suggerimenti

Ho messo insieme uno script che genera al volo una clip di 30 secondi di un file MP3. Se stai cercando di salvare il file, una delle altre opzioni che usano una classe / libreria sarà probabilmente la migliore. Ma, se vuoi solo giocare / scaricare l'anteprima, al volo potrebbe essere migliore. Ti farà sicuramente risparmiare spazio sul disco rigido.

Dai un'occhiata a http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/ .

Ecco il codice, ma una spiegazione più approfondita può essere trovata sul mio blog.

$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;

In Debian / ubuntu prova a installare mpgtx :

apt-get install mpgtx

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

Sono sicuro che troverai mpgtx disponibile anche in altre distro Linux, o semplicemente l'installazione dal sorgente.

Ho avuto problemi nell'elaborare alcuni mp3 con MP3 Class e mpgtx. L'opzione migliore qui è ffmpeg penso. Questa pagina contiene alcuni buoni esempi sulla divisione dei file multimediali con ffmpeg .

Ho usato PHP MP3 per il mio progetto.

<?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');
?>

Nel tuo caso puoi usare extract (0,30) o extract (30,60) .

//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!

fonte: https://github.com/thegallagher/PHP -MP3 / blob / master / README.md

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

  

PHP-MP3 è una semplice libreria per leggere e manipolare l'audio MPEG   (MP3).

Installare:

composer require falahati/php-mp3:dev-master

Taglia audio MPEG:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top