Intereting Posts
Обратный preg_replace Компиляция php с модулями vs с использованием общих модулей? Как получить каталог PHP Uploads? Загрузите CSV-файл и импортируйте его в базу данных с помощью Laravel Поиск многомерного массива для значения PHP Как сохранить переменную на уровне приложения в php? Существует ли ограничение на размер переменной PHP? Получить последний идентификатор вставки из последней вставленной строки WP_query Фильтр через meta_key и meta_value Почему использование подготовленного оператора mysql более безопасно, чем использование общих функций эвакуации? Неожиданный символ на входе: '\' (ASCII = 92) state = 1 в приложении Silex Как отправить электронную почту с сервера на Android? Почему считается, что плохая практика использует «глобальную» ссылку внутри функций? PHP mysql_insert_id () для первичных ключей UUID () MySQL? Как я могу решить «Нестатический метод xxx: xxx () не следует называть статическим в PHP 5.4?

Автоматическая обрезка mp3 в PHP

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

Благодарю.

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

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/blog/2012/01/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) .

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

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

Установка:

 composer require falahati/php-mp3 

Вырезать MPEG Audio:

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