Автоматическая обрезка mp3 в PHP - PullRequest
18 голосов
/ 10 сентября 2009

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

Спасибо.

Ответы [ 7 ]

20 голосов
/ 10 сентября 2009

Вы можете попробовать MP3 Class на PHPClasses. Это показывает следующий пример:

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

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

3 голосов
/ 17 января 2012

Я собрал скрипт, который выводит 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;
2 голосов
/ 18 октября 2011

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

2 голосов
/ 10 сентября 2009

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

apt-get install mpgtx

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

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

1 голос
/ 04 декабря 2016

Я использовал 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).

0 голосов
/ 09 марта 2018
//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

0 голосов
/ 18 сентября 2017

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

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

Установка:

composer require falahati/php-mp3:dev-master

Вырезать MPEG Audio:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
...