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

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

Проблемы и их решения Asterisk как такового

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

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

Сообщение kaapaa » 04 сен 2023, 10:46

Добрый день, пытаюсь решить проблему записи звонков в стерео формате, прошу помочь советом куда дальше копать. В один канал голос абонента, во второй канал голос оператора. В целом схема рабочая - звонки пишутся в 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
kaapaa
 
Сообщений: 4
Зарегистрирован: 04 сен 2023, 10:07

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

Сообщение ded » 04 сен 2023, 11:36

Узнайте что такое кодек slin и понаблюдайте на вашей FreePBX за штатной записью разговоров в CLI, увидите как разные кодеки, или даже одинаковые у обоих абонентов транскодируются в slin как раз для синхронизации всех источников звука между собой.
ded
 
Сообщений: 15830
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение kaapaa » 05 сен 2023, 01:38

Спасибо, как мне кажется я уже пытался это настроить. Если я правильно понимаю, мне нужно настроить принудительное транскодирование через 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
kaapaa
 
Сообщений: 4
Зарегистрирован: 04 сен 2023, 10:07

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

Сообщение ded » 05 сен 2023, 09:43

Объединять два 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
ded
 
Сообщений: 15830
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение kaapaa » 08 сен 2023, 10:30

Спасибо за советы, пока не получается решить проблему с принудительным транскодированием. Обязательно попробую, отпишусь по результату
kaapaa
 
Сообщений: 4
Зарегистрирован: 04 сен 2023, 10:07

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

Сообщение ded » 08 сен 2023, 12:23

Monitor(slin,/tmp/testfile.slin)
ded
 
Сообщений: 15830
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение kaapaa » 15 сен 2023, 10:42

Большое спасибо за ответ, monitor помог. Уже неделю полёт нормальный
С MixMonitor который пишет 2 файла это не работало,(либо я чтото делал не так).
kaapaa
 
Сообщений: 4
Зарегистрирован: 04 сен 2023, 10:07


Вернуться в Конфигурация и настройка Asterisk

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

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

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