Я хочу инициировать около 100 параллельных вызовов, только с записью другой стороны, в одном процессе с использованием python3 + pjsua2. Начальный этап в порядке, но на сделанных записях звук зажат (звук в wav в 2-3 раза быстрее реального звука), возможно, проблема где-то с RTP. Что я мог сделать, чтобы это исправить?
Раньше я использовал один рабочий Python = один клиент pjsua2 = 10-15 вызовов. И это сработало совершенно хорошо, но тяжело для оперативной памяти. Вот почему я пытаюсь поместить все в один процесс, но не уверен, что это вообще возможно.
Вот моя компиляция и конфигурации приложения для 100 параллельных вызовов в одном процессе.
"-DPJSIP_T1_TIMEOUT=3000 -DPJSIP_T2_TIMEOUT=10000 \
-DPJSUA_MAX_CALLS=150 -DPJSUA_MAX_ACC=150 \
-DPJ_LOG_ENABLE_COLORS=1 -DPJMEDIA_CODEC_FRAME_PTIME=30 \
-DPJSIP_MAX_TSX_COUNT=1000 -DPJSIP_MAX_DIALOG_COUNT=1000 \
-DPJ_IOQUEUE_MAX_HANDLES=1024 -DPJMEDIA_HAS_VIDEO=0\
-DPJSIP_UDP_SO_SNDBUF_SIZE=524288 -DPJSIP_UDP_SO_RCVBUF_SIZE=524288 \
-DPJ_HAS_THREADS=1 -DPJ_TIMER_HEAP_SIZE=262144 \
-DPJ_POOL_LEN=8000 -DPJ_POOL_INC=1024 \
-DPJ_THREAD_STACK_SIZE=512*1024 -fPIC" ./configure --disable-video
class PJSIP:
_instance = None
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super(PJSIPApp, cls).__new__(cls)
return cls._instance
def __init__(
self,
):
if not hasattr(self, "_initialized"):
self.ep = Endpoint()
self.accounts = {}
self.calls = {}
self.log_cfg = pj.LogConfig()
self.log_cfg.level = settings.PJSIP_LOG_LEVEL
self.log_cfg.msgLogging = True
self.create_lib()
self._initialized = True
def create_lib(
self,
):
try:
self.ep_cfg = pj.EpConfig()
self.ep_cfg.uaConfig.threadCnt = 1
self.ep_cfg.uaConfig.mainThreadOnly = False
self.ep_cfg.uaConfig.maxCalls = 150
self.ep_cfg.uaConfig.enableAec = False
self.ep_cfg.medConfig.noVad = True
self.ep_cfg.medConfig.threadCnt = 4
self.ep_cfg.medConfig.audioFramePtime = 30
self.ep_cfg.medConfig.ptime = 30
self.ep_cfg.logConfig = self.log_cfg
self.ep.libCreate()
self.ep.libInit(self.ep_cfg)
transport_cfg = pj.TransportConfig()
transport_cfg.port = 0
self.ep.transportCreate(pj.PJSIP_TRANSPORT_UDP, transport_cfg)
self.ep.audDevManager().setNullDev()
self.ep.libStart()
self.configure_codecs()
except pj.Error as e:
logger.error(
f"Can't initiate pjsip lib: {e.reason}", exc_info=True, stack_info=True
)
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-parallel
Как создать большое количество исходящих звонков параллельно? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отправить POST-запрос к ресурсу «Звонки»? (совершение исходящих звонков в Twilio)
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как отправить POST-запрос к ресурсу «Звонки»? (совершение исходящих звонков в Twilio)
Anonymous » » в форуме Python - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Возможно ли в Android записывать звонок во время входящих или исходящих звонков
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-