pjsip - 如果我在 pjsip sdk 中设置 AccountVideoConfig::autoTransmitOutgoing false,我无法显示远程窗口
问题描述
如果我在 pjsip sdk 中设置 AccountVideoConfig::autoTransmitOutgoing false ,我无法显示远程窗口,并且屏幕是绿色的没有视频数据,我不知道为什么?但是需要注意的是,如果 AccountVideoConfig::autoTransmitOutgoing 设置为 false,它只是不会将视频数据发送到远程,并且可以从远程接收和显示窗口。发生了什么事?
这是我的代码:
PJSIP_DDAPI_STATUS_CODE PjsuaDDApiInterface::registerAcct() {
if (m_pAcct) {
return E_HAS_OPERATED;
}
std::string idUri = "sip:" + m_myAcctInfo.str_acct + "@" + m_myAcctInfo.str_domain;
std::string registrarUri = "sip:" + m_myAcctInfo.str_domain;
m_aCfg.idUri = idUri;
m_aCfg.regConfig.registrarUri = registrarUri;
AuthCredInfo cred("digest", "*", m_myAcctInfo.str_acct, 0, m_myAcctInfo.str_pwd);
m_aCfg.sipConfig.authCreds.push_back(cred);
m_aCfg.callConfig.timerMinSESec = 90;
m_aCfg.callConfig.timerSessExpiresSec = 1800;
m_aCfg.videoConfig.autoShowIncoming = false;
m_aCfg.videoConfig.autoTransmitOutgoing = false;
m_aCfg.videoConfig.defaultCaptureDevice = PJMEDIA_VID_DEFAULT_CAPTURE_DEV;
m_aCfg.videoConfig.defaultRenderDevice = PJMEDIA_VID_DEFAULT_RENDER_DEV;
try {
m_pAcct = new DdAccount();
m_pAcct->create(m_aCfg);
}
catch (Error &err) {
if (m_pAcct != NULL) {
delete m_pAcct;
m_pAcct = NULL;
}
PJ_LOG(3, (THIS_FILE, "registerAcct failed, %s:%d", err.info().c_str(), __LINE__));
return E_OTHER_ERROR;
}
return E_SIPDD_SUCCESS;
}
解决方案
我通过在 dshow_dev.c 文件中注释掉两行代码解决了这个问题:
//if (strm->vid_cb.capture_cb)
// (*strm->vid_cb.capture_cb)(&strm->base, strm->user_data, &frame);
推荐阅读
- r - 闪亮的服务器重复多次独特的输入
- javascript - 默认时间的时间选择器问题
- javascript - 在 MongoDB 的 UpdateOne 语句中使用多个查询条件
- go - 根据另一个字段获取给定字段的所有值
- tensorflow - 无法安装最新的 termcolor 版本
- vb.net - VB.NET 创建动态文本框并具有不同的功能
- plantuml - 当一个元素属于两组时,UML图中的对象的交集
- ansible - 是否有考虑主机组的可靠策略?
- javascript - 我如何让我的 js Discord 机器人在接收消息的私人频道上的事件上发布嵌入到公共频道?
- elasticsearch - 如何从 Elasticsearch 索引中删除所有段?