ffmpeg, подготавливаем звуковые файлы для Asterisk
Если вы хотите создать голосовое меню(IVR) с помощью Asterisk, вам понадобится подготовить файлы начиток так, что бы астериск смог их проигрывать. Сконвертировать файл в формат который понимает Asterisk можно с помощью ffmpeg. ffmpeg есть в портах, из них и установим:
cd /usr/ports/multimedia/ffmpeg make install clean
В начале появится диалог настроек. Я обычно выставляю такие флаги:
┌────────────────────────────────────────────────────────────────────┐ │ Options for ffmpeg 0.5,1 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │[X] AMR_NB AMR Narrow Band encoder │ │ │ │[X] AMR_WB AMR Wide Band encoder │ │ │ │[X] DIRAC Dirac codec via libdirac │ │ │ │[ ] FAAC FAAC mp4/aac audio encoder │ │ │ │[X] FAAD FAAD mp4/aac audio decoder │ │ │ │[X] FFSERVER Build and install ffserver │ │ │ │[X] GSM GSM audio codec │ │ │ │[ ] IPV6 IPV6 network support │ │ │ │[X] LAME LAME MP3 encoder │ │ │ │[ ] OPENJPEG JPEG 2000 decoder │ │ │ │[X] OPTIMIZED_CFLAGS Additional optimizations │ │ │ │[X] SCHROEDINGER Dirac codec via libschroedinger │ │ │ │[ ] SDL SDL support (build ffplay) │ │ │ │[X] SPEEX Speex audio decoder │ │ │ │[ ] THEORA Theora encoder (implies OGG) │ │ │ │[ ] VHOOK Video hook support │ │ │ │[X] VORBIS Vorbis encoder via libvorbis (implies OGG)│ │ │ │[X] X264 H.264 encoder │ │ │ │[X] XVID Xvid encoder via xvidcore │ │ ├─└────.(+)────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
Важные для нас в этой задаче кодеки: LAME – позволяет работать с mp3 файлами, GSM и SPEEX – это кодеки нужные Asteriskу.
Самая главня задача выполнена, теперь можно конвертировать файлы. Делается это так:
ffmpeg -i test.mp3 -acodec pcm_s16le -ar 8000 -ac 1 -y done/test.wav
Это простейшее преобразование формата acodec определяет кодек которым будет закодирован выходящий файл, ar – определяет audio sample rate, частота дискретизации и -ac – это количество каналов. Для телефонии хватает монофонического звука, поэтому второй канал срезаем.
Вообще ffmpeg очень приятная утилита. Например если нужно уменьшить громкость, то достаточно задать флаг -vol и дальше – цифру громкости.
Выглядит это так:
ffmpeg -i test.mp3 -acodec pcm_s16le -ar 8000 -vol 550 -ac 1 -y done/test.wav
Перед запуском ffmpeg нужно создать в той директории где находится файл поддиректорию done, в ней и появится после конвертации файл.
Для того что бы сконвертировать много файлов можно воспользоваться таким скриптом:
#!/bin/sh for i in *.mp3 do ffmpeg -i $i -acodec pcm_s16le -vol 550 -ar 8000 -ac 1 -y done/"${i%mp3}wav" done



