Pergunta

Existem maneiras de aparar automaticamente um MP3 enviado para um site para 30 segundos (ou algum outro comprimento) no PHP? Caso contrário, existem bons serviços de terceiros que podem ser integrados (transparentemente ao usuário) para obter o mesmo efeito?

Obrigado.

Foi útil?

Solução

Você poderia tentar o MP3 Class em phpclasses. Possui o seguinte exemplo:

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

Nesse caso, o 'quadro' pode ser substituído por 'segundo' para basear o corte em um período de tempo.

Outras dicas

Reuni um script que gera um clipe de 30 segundos de um arquivo MP3 em tempo real. Se você deseja salvar o arquivo, uma das outras opções usando uma classe/biblioteca provavelmente será melhor. Mas, se você deseja apenas reproduzir/baixar a visualização, pode ser melhor. Definitivamente salvará o espaço do disco rígido.

Confira em http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/.

Aqui está o código, mas uma explicação mais profunda pode ser encontrada no meu 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;

Em Debian/Ubuntu, tente instalar mpgtx:

apt-get install mpgtx

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

Tenho certeza de que você encontrará o MPGTX disponível em outras distritos finos do Linux ou apenas instalará a partir da fonte.

Eu tive problemas para processar alguns MP3s com a classe MP3 e o MPGTX. A melhor opção aqui é o FFMPEG, eu acho. Esta página Tem alguns bons exemplos sobre a divisão de arquivos de mídia com o FFMPEG.

I used PHP MP3 for my project.

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

For your case you can use extract(0,30) or 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!

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

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

PHP-MP3 is a simple library for reading and manipulating MPEG audio (MP3).

Install:

composer require falahati/php-mp3:dev-master

Cut MPEG Audio:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top