VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Рассинхрон при записи звонков в стерео

Проблемы Asterisk без вэб-оболочек и их решения

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

Ответить
kaapaa
Сообщения: 4
Зарегистрирован: 04 сен 2023, 09:07

Рассинхрон при записи звонков в стерео

Сообщение kaapaa »

Добрый день, пытаюсь решить проблему записи звонков в стерео формате, прошу помочь советом куда дальше копать. В один канал голос абонента, во второй канал голос оператора. В целом схема рабочая - звонки пишутся в 2 потока, конвертируются и в основном всё хорошо.
Периодически возникают 2 проблемы:
1. Во время долгих разговоров звук в каналах начинается расходиться на пару секунд, что вызывает проблемы при прослушивании.
2. Либо при включении moh оператором, один из потоков начинает сильно отличаться, что делает запись при слиянии невозможной для прослушивания.
Гуглёж говорит, что мою проблему должен решить ключ S для добавления тишины и синхронизации потоков, но не помогает.

Сейчас делаю это так,
Через extensions_override_freepbx.conf меняю правила для записи файла. Пишу в 3 файла через MixMonitor, оригинал, входящий поток, исходящий поток. По умолчанию использую для записи wav. Оригинал сохраняю на случай проблем.

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

exten => recordcheck,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}_origin.${MON_FMT},bSr(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}_IN.${MON_FMT})bSt(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}_OUT.${MON_FMT}),${MIXMON_POST})
После разговора запускаю Post Call Recording Script, которым по сути выполняю 2 команды.

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

sox ${FFILENAME_IN}  ${FFILENAME_OUT} --channels 2 --combine merge ${FFILENAME_MERGE}
- для объединения потоков

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

lame --quiet -m d --preset phone -m d -h -v ${WAVFILE} ${MP3FILE} 
- для конвертации в mp3
Во вложении скрин 3 записей открытых в audacity для звонка в котором была музыка на ожидании, даже визуально видно большой рассинхрон.

В соседних темах писали, что freepbx умеет писать из коробки в стерео, но не нашел этого ни в доке, ни потыкавшись в интерфейсе.
Пробывал менять формат записи в sln, но проблема так же осталась, разницы с wav не заметил. Возможно каналы надо как то хитро объединять, потому что sox в 2 канала не работает в sln и делал в wav, но не нашел ответ.

FreePBX 15.0.23.17
Asterisk 16.5.0
Sox v14.4.1
Вложения
untitled.png
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: Рассинхрон при записи звонков в стерео

Сообщение ded »

Узнайте что такое кодек slin и понаблюдайте на вашей FreePBX за штатной записью разговоров в CLI, увидите как разные кодеки, или даже одинаковые у обоих абонентов транскодируются в slin как раз для синхронизации всех источников звука между собой.
kaapaa
Сообщения: 4
Зарегистрирован: 04 сен 2023, 09:07

Re: Рассинхрон при записи звонков в стерео

Сообщение kaapaa »

Спасибо, как мне кажется я уже пытался это настроить. Если я правильно понимаю, мне нужно настроить принудительное транскодирование через slin и именно это я и не могу сделать.
По умолчанию сервер с которого я принимаю звонки отдаёт только ulaw и alaw, софтфоны операторов так же ulaw и alaw.
Прошу помочь, в какую сторону дальше копать

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

PBX Core settings
-----------------
...
Transcode via SLIN:          Enabled
Transmit silence during rec: Enabled
...
В дефолтной конфигурации каналы выглядят так:

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

>core show channel
  NativeFormats: (ulaw)
    WriteFormat: ulaw
     ReadFormat: ulaw
    WriteTranscode: No
    ReadTranscode: No
Попробывал ограничить со своей стороны и получил транскодирование, но без использования slin.

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

  NativeFormats: (alaw)
    WriteFormat: ulaw
     ReadFormat: alaw
 WriteTranscode: Yes (ulaw@8000)->(alaw@8000)
  ReadTranscode: No
Через костыль в виде Set(SIP_CODEC=g729) получил транскодирование через slin, но решение мне не оч нравится. Есть ощущение, что есть более красивое решение.

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

  NativeFormats: (g729)
    WriteFormat: ulaw
     ReadFormat: ulaw
 WriteTranscode: Yes (ulaw@8000)->(slin@8000)->(g729@8000)
  ReadTranscode: Yes (g729@8000)->(slin@8000)->(ulaw@8000)
Подробный вывод дебага обычного звонка

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

bridge_native_rtp.c:624 native_rtp_bridge_compatible_check: Bridge '875bc240-8001-434b-9745-c565a97ebe6c'.  Checking compatability for channels 'SIP/222-0048888d' and 'SIP/899-0048888c'
bridge_native_rtp.c:634 native_rtp_bridge_compatible_check: Bridge '875bc240-8001-434b-9745-c565a97ebe6c' can not use native RTP bridge as channel 'SIP/899-0048888c' has features which prevent it
bridge.c:530 find_best_technology: Bridge technology native_rtp is not compatible with properties of existing bridge.
bridge.c:520 find_best_technology: Bridge technology holding_bridge does not have any capabilities we want.
bridge.c:520 find_best_technology: Bridge technology softmix does not have any capabilities we want.
bridge.c:544 find_best_technology: Chose bridge technology simple_bridge
bridge.c:1083 smart_bridge_operation: Bridge 875bc240-8001-434b-9745-c565a97ebe6c is already using the new technology.
bridge.c:443 bridge_channel_complete_join: Bridge 875bc240-8001-434b-9745-c565a97ebe6c: 0x7f9db82762a0(SIP/899-0048888c) is joining simple_bridge technology
channel.c:5645 set_format: Channel SIP/899-0048888c setting read format path: ulaw -> ulaw
channel.c:5645 set_format: Channel SIP/222-0048888d setting write format path: ulaw -> ulaw
channel.c:5645 set_format: Channel SIP/222-0048888d setting read format path: ulaw -> ulaw
channel.c:5645 set_format: Channel SIP/899-0048888c setting write format path: ulaw -> ulaw
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: Рассинхрон при записи звонков в стерео

Сообщение ded »

Объединять два slin файла не через sox а через ffmpeg
ffmpeg -i left.slin -i right.slin -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" output.mp3
ffmpeg -i left.slin -i right.slin -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" output.mka

https://trac.ffmpeg.org/wiki/AudioChannelManipulation
kaapaa
Сообщения: 4
Зарегистрирован: 04 сен 2023, 09:07

Re: Рассинхрон при записи звонков в стерео

Сообщение kaapaa »

Спасибо за советы, пока не получается решить проблему с принудительным транскодированием. Обязательно попробую, отпишусь по результату
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: Рассинхрон при записи звонков в стерео

Сообщение ded »

Monitor(slin,/tmp/testfile.slin)
kaapaa
Сообщения: 4
Зарегистрирован: 04 сен 2023, 09:07

Re: Рассинхрон при записи звонков в стерео

Сообщение kaapaa »

Большое спасибо за ответ, monitor помог. Уже неделю полёт нормальный
С MixMonitor который пишет 2 файла это не работало,(либо я чтото делал не так).
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH