Вопрос

Есть ли способы автоматически обрезать MP3, загруженный на веб-сайт, до 30 секунд (или какой-либо другой длины) в PHP?Если нет, есть ли какие-либо хорошие сторонние сервисы, которые можно было бы интегрировать (прозрачно для пользователя) для достижения того же эффекта?

Спасибо.

Это было полезно?

Решение

Вы могли бы попробовать Класс MP3 на классах PHP.Он имеет следующий пример:

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

В этом случае «кадр» можно заменить на «секунду», чтобы сделать разрез на основе временного интервала.

Другие советы

Я собрал сценарий, который на лету выводит 30-секундный клип из файла MP3.Если вы хотите сохранить файл, вероятно, лучше всего подойдет один из других вариантов с использованием класса/библиотеки.Но если вы просто хотите воспроизвести/загрузить предварительную версию, лучше использовать вариант «на лету».Это определенно сэкономит вам место на жестком диске.

Проверьте это на http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/.

Вот код, но более глубокое объяснение можно найти в моем блоге.

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

В Debian/ubuntu попробуйте установить mpgtx:

apt-get install mpgtx

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

Я уверен, что вы найдете mpgtx доступным и в других хороших дистрибутивах Linux или просто установите его из исходного кода.

У меня были проблемы с обработкой некоторых файлов mp3 как с классом MP3, так и с mpgtx.Думаю, лучший вариант здесь — ffmpeg. Эта страница есть несколько хороших примеров разделения медиафайлов с помощью ffmpeg.

я использовал PHP MP3 для моего проекта.

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

Для вашего случая вы можете использовать extract(0,30) или 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!

источник : https://github.com/thegallagher/PHP-MP3/blob/master/README.md

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

PHP-MP3-это простая библиотека для чтения и манипулирования MPEG Audio (MP3).

Установить:

composer require falahati/php-mp3:dev-master

Вырезать аудио MPEG:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top