# Конвертация записи звонка в mp3

По умолчанию, Asterisk сохраняет записи звонков в формате WAV. Это объёмный формат, поэтому для экономии места на диске, Itgrix предлагает конвертировать записи в формат mp3, что ранее делалось через [кастомизацию](https://docs.itgrix.ru/custom_common/mp3-record).

Начиная с версии [3.13.0](https://docs.itgrix.ru/changelog-bx#id-3.13.0), конвертация записей в mp3 добавлена в основной функционал коннектора Itgrix.

(скрин блока настроек конвертации в админке)

{% hint style="info" %}
При обновлении на версию 3.13.0 и выше, чтобы начал работать новый способ конвертации, нужно не только включить его в админке, но и отключить старый способ. При новой установке включена конвертация новым способом, а не через кастомизацию.

Проще всего это сделать через админку: отключить кастомизацию **пути до файла записи звонка** на странице "Модуль". Если у вас настроены другие действия в этой кастомизации, помимо конвертации в mp3, то нужно [закомментировать](https://gitlab.itgro.dev/itgrix/gitbookrus/-/blob/sync/custom_common/mp3-record/README.md#otklyuchenie-konvertacii-v-kastomizacii) блок кода, который выполняет конвертацию.
{% endhint %}

## Программа конвертер

Старый способ конвертации использовал программу `lame`, которая должна была быть отдельно установлена на сервере. Новый способ использует по умолчанию поставляемую вместе с Itgrix компактную сборку `ffmpeg` с функционалом только для работы с аудио файлами. Это более гибкое проложение, поддерживающее множество форматов и фильтров, и его не нужно устанавливать отдельно. Настройки в админке позволяют выбрать любую другую программу, в том числе `lame` или установленную в системе полную версию `ffmpeg`.

Для выбора программы конвертации нужно указать команду её запуска в поле "Путь до конвертера записей", по умолчанию `/opt/itgrix_bx/ffmpeg/ffmpeg`. Можно указать команду без полного пути, тогда будет использоваться программа из системы в соответствии с переменной окружения `PATH`.

Параметры запуска программы конвертера тоже свободно настраиваются через поле "Аргументы команды конвертации записей". В этом поле используются две переменные: `#IN#` и `#OUT#` - пути до входного файла (wav) и выходного файла (mp3).

Аргументы по умолчанию для ffmpeg такие:\
`-loglevel error -i #IN# -f mp3 -codec:a libmp3lame -compression_level 2 -b:a 192k #OUT#`

Они означают следующее:

* `-loglevel error` - выводить только ошибки
* `-i #IN#` - путь до wav файла
* `-f mp3` - конвертация в формат mp3
* `-codec:a libmp3lame` - использовать аудио кодек "libmp3lame"
* `-compression_level 2` - [уровень сжатия](https://ffmpeg.org/ffmpeg-codecs.html#Options-16) 2
* `-b:a 192k` - аудио битрейт 192 килобит в секунду

Документацию по параметрам `ffmpeg` можно найти на [официальном сайте](https://trac.ffmpeg.org/wiki/Encode/MP3).

Время работы программы конвертера ограничено **таймаутом**, по умолчанию 30 секунд.

## Кастомизируемость

Старая кастомизация **пути до файла записи звонка** (`process_record_file_path`) по-прежнему может использоваться для изменения пути к входному (wav) файлу, но теперь добавлена новая кастомизация **параметров конвертации записи** (`customize_record_conversion`). Она позволяет менять все параметры конвертации:

* `IN` - путь до входного файла (wav)
* `OUT` - путь до выходного файла (mp3)
* `recording_converter_path` - программа конвертер
* `recording_converter_args` - аргументы запуска программы конвертера
* `recording_converter_timeout_msec` - таймаут работы программы конвертера
* `overwrite_cdr_recordingfile` - опция обновления пути до записи в таблице CDR Asterisk
* `initial_cdr_recordingfile` - значение пути до записи в таблице CDR Asterisk, которое будет заменено на новое
* `updated_cdr_recordingfile` - новое значение пути до записи в таблице CDR Asterisk
* `delete_original_recordings` - опция удаления исходного (wav) файла
