Yvision.kzYvision.kz
kk
Разное
Разное
399 772 постов41 подписчиков
Всяко-разно
0
02:14, 14 сентября 2016

Запись разговора в формате mp3 в Asterisk

Blog post image

Asterisk по умолчанию включает возможность по записи телефонных разговоров. Данные аудио диалога абонентов записываются в файл формата .wav, при очень частых входящих звонках файлы wav отнимают приличное место на жестком диске. Допустим есть 1 Тбайт свободного пространства не считая данных ОС и установленных программ, это свободную область можно легко заполнить из за частых звонков. Но есть спасение, Asterisk после сохранения файла формата wav, может вызывать внешние команды, например можно вызвать утилиту по конвертации аудио файла в формат mp3 и после этого преобразования, стереть исходный wav файл.

Так как Интернет кишит примерами по конвертации разговора, я взял один из предложенных вариантов и решил записать его у себя в бложике.

Создадим макрос "app-mp3-record" в extensions.conf

 

;--== begin of [app-mp3-record] ==--;

[macro-app-mp3-record]

exten => s,1,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32 "${ARG1}${ARG2}.wav" "${ARG1}${ARG2}.mp3" && rm -f "${ARG1}${ARG2}.wav" && chmod 777 "${ARG1}${ARG2}.mp3" && rm -f "${ARG1}${UNIQUEID}.wav")

exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)

exten => s,n,MixMonitor(${ARG1}${ARG2}.wav,i(MIXMONITORID),${monopt})

;--== end of [app-mp3-record] ==--;

Теперь в место входящего звонка по городскому номеру 2755-343 вставляем вызов нашего макроса:

[incoming]
exten => 2755343,1,Set(CHANNEL(musicclass)=welcom)
same => n,Macro(app-mp3-record,/var/spool/asterisk/monitor/,${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID})
same => n,Answer()
....... ........ ......... ....... ........ ......... ....... ........ .........

Здесь мы передали макросу через запятую каталог с текущей датой, туда будут записываться наши mp3 файлы. Это все для входящих звонков, для исходящих можно сделать так:

[macro-provaider]

exten => s,1,Macro(app-mp3,/var/spool/asterisk/monitor/,${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID})
same => n,Dial(SIP/${ARG2}@${ARG1},,t)

И сам контекст с вызовом макроса:

 

[provaider]

exten => _[78]70XXXXXXXX,1,Macro(provaider,+77016392412,+7${EXTEN:1})

 

Если много wav файлов, и их надо превратить в mp3, задействуйте скрипт /var/spool/asterisk/monitor/convert.sh:

 

   


#!/bin/bash
minsize=44
for i in `find /var/spool/asterisk/monitor/ -name "*.wav"`;
  do
    size=$(du -b "$i" | cut -f 1);
    if [ "$size" -gt "$minsize" ]; then
      /bin/nice -n 19 /usr/bin/lame -b 16 --silent $i ${i%.*}.mp3;
      if [ -s "${i%.*}.mp3" ]; then
        rm -f $i;
        echo converted ${i%.*}.mp3;
      fi
    else
      rm -f $i;
      echo deleted $i;
    fi
done

   

 

Этот скрипт переведет все файлы wav в mp3 в каталоге /var/spool/asterisk/monitor/.

Чтобы RTAG мог воспроизводить mp3 файлы, измените его конфиг файл conf.php - включив нужную опцию:

 

//Расширение записанных файлов
$record_file_type = 'mp3';
 
0
3441
0