First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Писать MixMonitor'ором сразу в mp3

0

Привет,

Знает кто то как можно сразу писать запись в mp3? Не дергать скрипт после записи или еще что то типа этого, а сразу писать в mp3 формате

скрипт такой

#!/bin/bash
recorddir
="/home/asterisk"
for i in `ls $recorddir/*.wav`;
do
cd $recorddir
lame
-d $i `basename $i .wav`.mp3;
done

а как конвертировать с низким приоритетом ?

спросил Aug 21 '11

godlike Gravatar godlike flag of Ukraine
814 92 24 62

обновил Aug 22 '11

Comments

почему именно мп3? .gsm меньше занимает cvieri (Aug 22 '11)edit
mp3 при качестве gsm занимает столько же. качество же в жсм не регулируется. meral (Aug 22 '11)edit
nice -n 19 перед lame допишите. кстати ваш скрипт не рабочий. даю подсказку. он конвертит недописанный файлик. meral (Aug 22 '11)edit

6 Ответов

0
exten => _XXXX,2,MixMonitor(/var/spool/asterisk/monitor/${STRFTIME(,,%Y)}/${STRFTIME(,,%m)}/${STRFTIME(,,%d)}/${STRFTIME(,,%H)}/${STRFTIME(,,%H-%M)}_${CALLERID(NUM)}_${EXTEN}.wav,b v(3) V(3) W(3),/usr/bin/lame -S -V2 /var/spool/asterisk/monitor/${STRFTIME(,,%Y)}/${STRFTIME(,,%m)}/${STRFTIME(,,%d)}/${STRFTIME(,,%H)}/${STRFTIME(,,%H-%M)}_${CALLERID(NUM)}_${EXTEN}.wav /var/spool/asterisk/monitor/${STRFTIME(,,%Y)}/${STRFTIME(,,%m)}/${STRFTIME(,,%d)}/${STRFTIME(,,%H)}/${STRFTIME(,,%H-%M)}_${CALLERID(NUM)}_${EXTEN}.mp3 && rm -f /var/spool/asterisk/monitor/${STRFTIME(,,%Y)}/${STRFTIME(,,%m)}/${STRFTIME(,,%d)}/${STRFTIME(,,%H)}/${STRFTIME(,,%H-%M)}_${CALLERID(NUM)}_${EXTEN}.wav)<br>
exten
=> _XXXX,3,Dial(SIP/1998,,tT)<br>
exten
=> _XXXX,4,StopMixMonitor() <br>

Вот ток на буя ? Проще писать в gsm да и ресурсов поменьше жрет....

ссылка удалить спам редактировать

ответил Aug 22 '11

CheeZ Gravatar CheeZ
1205 7 6 25

обновил Aug 22 '11

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

+1 cvieri (Aug 22 '11)edit
ресурсы ресурсам рознь. пусть лучше жрет ночью. код ужасен. оформление еще хуже. meral (Aug 22 '11)edit
Просто записи сразу после разговора будут вытягиваться клиентами через web интерфейс, и им как бы логичнее подсовывать mp3 а то не поймут че это за формат такой gsm godlike (Aug 22 '11)edit
По факту установить gsm кодек под винду это не проблема и будет себе играть в медиаплеере или чего там пожелаете. CheeZ (Aug 22 '11)edit
это я буду тысяче человек рассказывать что им надо еще чета себе куда то ставить что бы прослушать :) godlike (Aug 22 '11)edit
это будет решение не для десятка и даже не для сотни человек godlike (Aug 22 '11)edit
есть офрмат wav-compressed. по сути это gsm с расширением wav. ничего ставить не надо. meral (Aug 22 '11)edit
а можно как то сказать астериску писать в этом формате? godlike (Aug 23 '11)edit
да. расширение wav49 написать. а потом скриптом в конце переименовать в wav. meral (Aug 23 '11)edit
0

объячняю почему нет смысла сразу писать

1) нагрзука на проц больше и реалтайм 2) mixmonitor пишет отдельно вод и исход, в конце миксует. тоесть логично с низким приоритетом перекодировать в конце.

обычно делается через скрипт в mixmonitor или через внешний скрипт который ночью это делает. я предпочитаю второй вариант как более коректный и менее ресурсоемкий. точнее сказать нельзя, ибо вы ничего о вашем конфиге не написали.

в люом случае это надо внешний скриптик сделать и lame поставить

ссылка удалить спам редактировать

ответил Aug 22 '11

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

хотя не очень удачная идея, нужно смотреть в использования lame из астериска

ссылка удалить спам редактировать

ответил Aug 21 '11

um2010 Gravatar um2010
2056 70 13 55

Comments

я находил примеры где lame дергался сразу из экстеншена, то есть сразу в mp3 писать нельзя? godlike (Aug 21 '11)edit
1
в миксмониторе есть параметр command - в него после завершения записи можно вставить перекодирование в mp3 , насколько я знаю сразу в мп3 писать ничем не реально, поскольку сжатие в нем устроено с ориентированием на весь файл. um2010 (Aug 21 '11)edit
0

Чтобы сразу писать в mp3

extension.conf:

exten => _XXXX,1,MixMonitor(/calls/${UNIQUEID}.wav,,/usr/local/bin/conv2mp3 ${UNIQUEID})
exten
=> _XXXX,2,Dial(SIP/888,30,tT)
exten
=> _XXXX,3,Hangup

/usr/local/bin/conv2mp3:

#!/bin/sh
LAME
="/usr/local/bin/lame"
UID
="$1"
DIR
="/calls"
$LAME
-V2 $DIR/$UID.wav $DIR/$UID.mp3
rm
-f $DIR/$UID.wav

Требуется lame (/usr/ports/audio/lame)

ссылка удалить спам редактировать

ответил May 15 '12

ghost6639 Gravatar ghost6639
1 1

обновил May 15 '12

Comments

здраствуй дядя некромант. а чем твой ответ отличается от того что ниже написан не подскажешь?я бы поставил тееб минус, н ониже 1 не упадешь.

meral (May 15 '12)edit

Длинно и неудобно редактируемо.

ghost6639 (May 16 '12)edit
0

а что скажете на счёт идеи кодировать в oggenc -q0 (при -q-1 заметно значительное ухудшение качества), которое при кодировании 8 bit PCM Mono 8000 Hz дает сходное качество с lame -v. Конечно, lame -b 8 ещё меньше, но звук звук становится противным, железно-скрипучим. Кроме того .ogg, уже врятли смутит юзера как и .mp3, в отличии от .gsm или .spx.

ссылка удалить спам редактировать

ответил Jul 14 '12

thunderamur Gravatar thunderamur
444 70 12 39

Comments

ogg меня смутит. и 90% пользователей тоже. кодируйте мп3 с битрейтом около 20кбит.

meral (Jul 15 '12)edit
0
-- extensions.lua

local tpath="/tmp"
local dpath="/var/spool/asterisk/monitor/"
local bin="/usr/bin/lame"
local params=""

function record()
local dpath=string.format("%s/"..os.date("%Y/%m/%M-%S").."/%s",dpath,channel.CALLERID("num"):get():gsub("%s+", ""))  -- убираем пробелы в номере на всякий случай
local pt={wav=tpath, mp3=dpath }
local f=function(e) return string.format(pt[e]..".%s",e) end
sfile
=f("wav")
dfile
=f("mp3")
app
.mixmonitor(sfile,"b",string:format("%s %s %s %s && rm %s",bin,params,sfile,dfile,sfile))
return dfile
end

extensions
={}

extensions
.recordcall = { -- здесь пишем имя в CDRчик - если включен cdr_odbc то получим имя записанного файла в базе
record
=function()
channel
.CDR("recordname"):set(recordname)
end
}

extensions
.incoming = {
["_X."]=function(p,e)
app
.answer()
local recordname=record()
app
.dial(string.format("SIP/%s",e),"U(recordcall,record,1)")
end
}
ссылка удалить спам редактировать

ответил Feb 24 '13

octopas Gravatar octopas
111 5 1 3

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

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

подписаться на rss ленту новостей

Статистика

Задан: Aug 21 '11

Просмотрен: 14,641 раз

Обновлен: Feb 24 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.