ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

запись стерео WAV файла

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

запись стерео WAV файла

Сообщение pathfinder » 29 апр 2022, 13:00

Всем привет!
В extensions.conf создано несколько контекстов где для записи разговоров используется MixMonitor. Создается wav файл, моно.
И вот образовалась задача записывать стерео файлы для последующей обработки.
С помошью MixMonitor делаю так чтобы записывались отдельные wav файлы звонящего и отвечающего и потом с помощью SOX микширую эти два файла в один стерео wav файл.
Где есть MixMonitor поменял:
было:
Код: выделить все
MixMonitor(${PATH_CALLREC}${fname}.wav)

стало:
Код: выделить все
MixMonitor(,r(${PATH_CALLREC}${fname}_r.wav)t(${PATH_CALLREC}${fname}_t.wav),sox -M ${PATH_CALLREC}${fname}_r.wav ${PATH_CALLREC}${fname}_t.wav ${PATH_CALLREC}${fname}.wav && rm ${PATH_CALLREC}${fname}_r.wav && rm ${PATH_CALLREC}${fname}_t.wav)


Но после этих изменений входящий вызов приходящий из ТфОП сети (SIP канал) сбрасывается, Астериск отвечает сообщением "603 Declined".
Что может быть не так? Где искать проблему?
pathfinder
 
Сообщений: 2
Зарегистрирован: 29 апр 2022, 11:33

Re: запись стерео WAV файла

Сообщение ded » 29 апр 2022, 13:41

pathfinder писал(а):С помошью MixMonitor делаю так чтобы записывались отдельные wav файлы
это уже неверный шаг.
Получить сразу два отдельных аудио файла можно через Monitor, и потом через System(sox?... соединять в стерео.
*CLI> core show application Monitor

-= Info about application 'Monitor' =-

[Synopsis]
Monitor a channel.

[Description]
Used to start monitoring a channel. The channel's input and output voice
packets are logged to files until the channel hangs up or monitoring is stopped
by the StopMonitor application.
By default, files are stored to "/var/spool/asterisk/monitor/". Returns '-1' if
monitor files can't be opened or if the channel is already monitored, otherwise
'0'.

[Syntax]
Monitor([file_format[:urlbase]][,fname_base[,options]])

[Arguments]
file_format
optional, if not set, defaults to 'wav'
fname_base
if set, changes the filename used to the one specified.
options
m: when the recording ends mix the two leg files into one and delete the
two leg files. If the variable ${MONITOR_EXEC} is set, the application
referenced in it will be executed instead of soxmix/sox and the raw leg
files will NOT be deleted automatically. soxmix/sox or ${MONITOR_EXEC} is
handed 3 arguments, the two leg files and a target mixed file name which is
the same as the leg file names only without the in/out designator.
If ${MONITOR_EXEC_ARGS} is set, the contents will be passed on as
additional arguments to ${MONITOR_EXEC}. Both ${MONITOR_EXEC} and the Mix
flag can be set from the administrator interface.

b: Don't begin recording unless a call is bridged to another channel.

B([interval]): Play a periodic beep while this call is being recorded.
interval - Interval, in seconds. Default is 15.

i: Skip recording of input stream (disables 'm' option).

o: Skip recording of output stream (disables 'm' option).

[See Also]
StopMonitor()
*CLI> core show application System

-= Info about application 'System' =-

[Synopsis]
Execute a system command.

[Description]
Executes a command by using system(). If the command fails, the console
should report a fallthrough.
Result of execution is returned in the ${SYSTEMSTATUS} channel variable:
${SYSTEMSTATUS}:
FAILURE: Could not execute the specified command.
SUCCESS: Specified command successfully executed.

[Syntax]
System(command)

[Arguments]
command
Command to execute
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: запись стерео WAV файла

Сообщение gosha » 29 апр 2022, 13:51

ded, справедливости ради последние MixMonitor тоже могут два разных файла писать, + имеет полезную фичу - добавить тишину туда где rtp нету, чтоб голос не разбегался.
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

Re: запись стерео WAV файла

Сообщение ded » 29 апр 2022, 16:47

Верно. Разбег синхронизации при записи двух встречных потоков - Rx & Tx, тот ещё фокус. Как мы знаем, чтобы его устранить, делается дополнительный трюк - оба потока транскодируются в slin для синхронизаии друг с другом.
Без этой фишки, если просто сложить в аудиоредакторе два файла на разные дорожки, даже зрительно виден разбег. Прослушивая длинную запись такого разговора в конце возникает вопрос - они с кем там говорят? Что за хрень? Не друг с другом? :)
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: запись стерео WAV файла

Сообщение pathfinder » 29 апр 2022, 18:46

Так значит верно, что использую MixMonitor ?
pathfinder
 
Сообщений: 2
Зарегистрирован: 29 апр 2022, 11:33

Re: запись стерео WAV файла

Сообщение ded » 04 май 2022, 13:19

1) Попробуйте и Monitor, и MixMonitor/

2) Разбейте свою сложную конструкцию
Код: выделить все
MixMonitor(,r(${PATH_CALLREC}${fname}_r.wav)t(${PATH_CALLREC}${fname}_t.wav),sox -M ${PATH_CALLREC}${fname}_r.wav ${PATH_CALLREC}${fname}_t.wav ${PATH_CALLREC}${fname}.wav && rm ${PATH_CALLREC}${fname}_r.wav && rm ${PATH_CALLREC}${fname}_t.wav)
на две отдельные процедуры: а) создание двух аудиофайлов иб) соединение в стереофайл. Результат какждой процедуры можно проконтролировать.

3) Используйте System(sox....
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: запись стерео WAV файла

Сообщение Zavr2008 » 04 май 2022, 16:10

Не понятна цель - зачем в отдельные файлы писать, потом клеить вместе итп.
Из коробки в том же FreePBX пишется в каналы левый-правый, работает на миллионах установок..
Нужен отдельный процессинг - так этот файл раздербанивайте тем же sox на раздельные и делайте что нужно..

Потом зачем прямо в тексте делать вот это:
Код: выделить все
MixMonitor(,r(${PATH_CALLREC}${fname}_r.wav)t(${PATH_CALLREC}${fname}_t.wav),sox -M ${PATH_CALLREC}${fname}_r.wav ${PATH_CALLREC}${fname}_t.wav ${PATH_CALLREC}${fname}.wav && rm ${PATH_CALLREC}${fname}_r.wav && rm ${PATH_CALLREC}${fname}_t.wav)

Не проще ли это делать в bash скрипте и отладить отдельно? :)
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2159
Зарегистрирован: 27 янв 2011, 01:35

Re: запись стерео WAV файла

Сообщение ded » 04 май 2022, 20:05

Zavr2008, судя по
pathfinder писал(а):В extensions.conf создано несколько контекстов где для записи разговоров используется MixMonitor.
- у него не FreePBX, поэтому самодельные скрипты в диалплане.
Не думаю, что он будет ставить FreePBX из коробки и переводить работающую АТС на неё.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: запись стерео WAV файла

Сообщение Zavr2008 » 04 май 2022, 22:38

FreePBX как пример, так то вещь элементарна)

Код: выделить все

exten => _X.,1,Macro(record,${EXTEN})
...

[macro-record]
exten => s, 1, Set(frame=${UNIQUEID}_${STRFTIME(${EPOCH},,%Y%m%d%H%M)}_${CALLERID(num)}-${CALLERID(name)}-${ARG1})
exten => s, n, Set(fcmd=nice -n 10 /opt/moverecord "${frame}.wav")
exten => s, n, MixMonitor(/var/www/html/logs/${frame}.wav,b,${fcmd})
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2159
Зарегистрирован: 27 янв 2011, 01:35


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH