Авг 19 2009

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

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть