Рассинхрон при записи звонков в стерео
Добавлено: 04 сен 2023, 09:46
Добрый день, пытаюсь решить проблему записи звонков в стерео формате, прошу помочь советом куда дальше копать. В один канал голос абонента, во второй канал голос оператора. В целом схема рабочая - звонки пишутся в 2 потока, конвертируются и в основном всё хорошо.
Периодически возникают 2 проблемы:
1. Во время долгих разговоров звук в каналах начинается расходиться на пару секунд, что вызывает проблемы при прослушивании.
2. Либо при включении moh оператором, один из потоков начинает сильно отличаться, что делает запись при слиянии невозможной для прослушивания.
Гуглёж говорит, что мою проблему должен решить ключ S для добавления тишины и синхронизации потоков, но не помогает.
Сейчас делаю это так,
Через extensions_override_freepbx.conf меняю правила для записи файла. Пишу в 3 файла через MixMonitor, оригинал, входящий поток, исходящий поток. По умолчанию использую для записи wav. Оригинал сохраняю на случай проблем.
После разговора запускаю Post Call Recording Script, которым по сути выполняю 2 команды.
- для объединения потоков
- для конвертации в mp3
Во вложении скрин 3 записей открытых в audacity для звонка в котором была музыка на ожидании, даже визуально видно большой рассинхрон.
В соседних темах писали, что freepbx умеет писать из коробки в стерео, но не нашел этого ни в доке, ни потыкавшись в интерфейсе.
Пробывал менять формат записи в sln, но проблема так же осталась, разницы с wav не заметил. Возможно каналы надо как то хитро объединять, потому что sox в 2 канала не работает в sln и делал в wav, но не нашел ответ.
FreePBX 15.0.23.17
Asterisk 16.5.0
Sox v14.4.1
Периодически возникают 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})
Код: Выделить всё
sox ${FFILENAME_IN} ${FFILENAME_OUT} --channels 2 --combine merge ${FFILENAME_MERGE}
Код: Выделить всё
lame --quiet -m d --preset phone -m d -h -v ${WAVFILE} ${MP3FILE}
Во вложении скрин 3 записей открытых в audacity для звонка в котором была музыка на ожидании, даже визуально видно большой рассинхрон.
В соседних темах писали, что freepbx умеет писать из коробки в стерео, но не нашел этого ни в доке, ни потыкавшись в интерфейсе.
Пробывал менять формат записи в sln, но проблема так же осталась, разницы с wav не заметил. Возможно каналы надо как то хитро объединять, потому что sox в 2 канала не работает в sln и делал в wav, но не нашел ответ.
FreePBX 15.0.23.17
Asterisk 16.5.0
Sox v14.4.1