Я хочу инициировать около 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
Программы на Python
-
Anonymous
1733493724
Anonymous
Я хочу инициировать около 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
)
Подробнее здесь: [url]https://stackoverflow.com/questions/79253208/how-to-create-a-large-number-of-outgoing-calls-in-parallel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия