Главная > Статьи > Конвертируем звуковые файлы (mp3, wav) в php.

Конвертируем звуковые файлы (mp3, wav) в php.

2
23.09.2014 09:58
Конвертируем звуковые файлы (mp3, wav) в php.

Конвертация звуковых файлов средствами PHP является не совсем тривиальной задачей, если говорить точнее - это вообще не предусмотрено, в связи с тем, что это занимало бы много времени из-за специфики работы самого языка PHP. Но данную задачу можно решить сторонними средствами управляя ими через вызов внешних программ из кода PHP.

Если вы работаете в среде Linux, то для начала вам стоит установить себе на сервер 2 программы (из исходников). За основу взят дистрибутив Ubuntu. Для этого выполним 2 команды в консоле linux'а.

# sudo apt-get install sox
# sudo apt-get install lame

Для windows стоит скачать 2 скомпилированные приложения.
Приложил к статье, на всякий случай.

Вкратце о программах. SOX (http://sox.sourceforge.net/) - это программа которая может применять различные эффекты, фильтры к аудио записям, а так же используется для конвертации аудио файлов в другие типы аудио файлов. Но для некоторых расширений нужны дополнительные кодеки, как в нашем случае и здесь на сцене появляется LAME (http://lame.sourceforge.net/). Данный набор кодеков как раз и предоставит нам возможность работы с mp3 файлами.

Вопрос конвертации WAV файлов в MP3 можно решить использованием лишь только набора кодеков LAME и выполнив команду из PHP использовав функцию запуска внешних программ.

<?php
    exec("/path/to/lame /path/to/source/file.wav /path/to/save/file.mp3");
?>

Тоже самое только с опцией смены битрейта.

<?php
    exec("/path/to/lame -b 16 -m m /path/to/source/file.wav /path/to/save/file.mp3");
?>

Где "-b" опция которая указывает, что будет установленный новый битрейт а цифра следующая после ключа "16" говорит о новом битрейте 16КБ.
Ключ "-m" говорит какой канал звука будет на выходе, например "-m m" говорит о том, что звук будет моноканальным.
Подробнее о ключах и опциях к ним прочитать можно здесь (http://lame.cvs.sourceforge.net/viewvc/lame/lame/USAGE).

Но вы спросите для чего нам тогда SOX. А вот тут то и исходная проблема и задача которая возникла у меня, формат файлов WAV которые поступали ко мне на сервер был специфичен и при стараниях его конвертировать я получал ошибки.

# Unsupported data format: 0x0006
# Unsupported data format: 0x0031

В итоге выяснилось, что WAV файлы просто имели низкое качество звука (так как это была запись телефонных разговоров) и отпускались с форматом "CCITT A-Law", данный формат является не совсем тривиальным для использования кодеком LAME. Потому функционал SOX был в самый раз. И при выполнение следующей команды из PHP все отлично конвертировалось.

<?php
     exec("/path/to/sox -t wav /path/to/source/file.wav -t wav -e signed-integer – | lame -b 16 -m mono – /path/to/save/file.mp3");
?>

Надеюсь данная статья кому-то поможет сократить время поиска решения задачи.

Вложения / Downloads:
Скачать файл (lame3_99_5_AND_sox_14_4_1.zip)lame3_99_5_AND_sox_14_4_1.zip[ ]3482 Kb336 Загрузки
Twitter
Нравится
SocButtons v1.4
 

Комментарии 

 
# Алексей 29.09.2014 12:21
Спасибо, отличное решение. Вот только было бы неплохо, что бы вы расписали параметры для lame.
Ответить | Ответить с цитатой | Цитировать
 
 
# Миша 29.07.2015 12:50
Немного мудрено, но работает!
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий


Защитный код
Обновить

 

Сторонние

Модуль новостей для Joomla - JU News Ultra
14.11.2011 |  9007
Модуль вывода новостей JU News Ultra - еще один способ...

Новости

Безопасность смартфона — пин-код с текущим временем, Screen Lock – Time Password
IT мир
20.10.2014 |  1156
Любой владелец смартфона всегда с опаской вводит пин-код разблокировки, ведь...
Alien: Isolation — прими участие в фильме «Чужой»
IT мир
20.10.2014 |  1025
Creative Assembly можно поздравить, впрочем, как и геймеров. Игра Alien:...
Серия «кожаных» ноутбуков от Samsung продолжается: Chromebook 2 с пассивным охлаждением
IT мир
20.10.2014 |  941
Samsung продолжило серию «одетых в кожу» ноутбуков. Новая модификация Chromebook...
3D-принтер iBox Nano — компактность, доступность и долговечность
IT мир
20.10.2014 |  1029
Громоздкие и дорогие 3D-принтеры слишком медленно распространяются. Для популяризации 3D-печати...