当 pjmedia_conf_connect_port 在 pjsip 中执行 SIGABRT 时,录音呼叫崩溃

2024-02-17

早些时候,当我使用 pjsip 2.7.1 时,它工作正常。通话录音很完美。但现在我已经安装了pjsip 2.9。它在 pjmedia_conf_connect_port 上崩溃。 SIGABRT 因为 pjsua_var.mconf。我不知道它什么时候在pjsip中分配的。请解释并帮助解决这个问题。

提前致谢

我尝试在录音中使用它之前创建一个媒体会议。但最终却没有任何声音。

+(void)startRecordingForCalleeId:(NSString *)calleeId andCallId:(int)callid
{


    NSLog(@"start recording...........");
    Recording *sipRecording = [[SPCoreDataManager sharedManager]createBlankSipRecordingForCalleeId:calleeId];
    NSString *filePath = [[SPFileManager sharedManager] pathForFile:sipRecording.fileName];


    SPAppDelegate *appDelegate = (SPAppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.objectID = sipRecording.objectID;
    pj_str_t fileName = pj_str([filePath UTF8String]);
    status = pjsua_recorder_create(&fileName, 0, NULL, -1, 0, &recorder_id);
    NSLog(@"status issss-->%d",status);



    [[NSUserDefaults standardUserDefaults] setInteger:recorder_id forKey:@"recording_id"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    NSLog(@"recordder id id--->%d",recorder_id);
    NSLog(@"recording is for start recording is--->%d",app_config.rec_id);

    //status = pjsua_recorder_create(&fileName, 0, NULL, -1, 0, &app_config.rec_id);

    if (status != PJ_SUCCESS)
    {
        pjsua_perror(__FILE__, "error dll_startAudioCapture from pjsua_recorder_create", status);
    }
    else
    {
        //app_config.rec_port = pjsua_recorder_get_conf_port(app_config.rec_id);
        app_config.rec_port = pjsua_recorder_get_conf_port(recorder_id);

        PJ_LOG(5, (__FILE__, "dll_startAudioCapture recId=%d confPort=%d", app_config.rec_id, app_config.rec_port));

        pjmedia_conf_connect_port(pjsua_var.mconf, callid,app_config.rec_port, 0);//working for the 1st call
        pjsua_call_get_info(callid, &call_info); //callid


        pjsua_state state = pjsua_get_state();
        if (state == PJSUA_STATE_NULL){
            return;
        }
        pjmedia_conf_connect_port(pjsua_var.mconf, call_info.conf_slot,app_config.rec_port, 0); //working for the 1st call
        pjsua_conf_connect(call_info.conf_slot, app_config.rec_port);
        pjsua_conf_connect(0, app_config.rec_port);


        if (status != PJ_SUCCESS)
        {
            pjsua_perror(__FILE__, "error dll_startAudioCapture edia_conf_connect_port snd->recport", status);
        }

        if (status != PJ_SUCCESS)
        {
            //pjsua_perror(THIS_FILE, @"error dll_startAudioCapture pjmedia_conf_connect_port caller->recport", status);
        }
        //boost callTaker's and caller audio levels as configured
        if ((status = pjmedia_conf_adjust_rx_level(pjsua_var.mconf, pjsua_var.recorder[app_config.rec_id].slot,0)) == PJ_SUCCESS)
        {
            //                PJ_LOG(5, (THIS_FILE, "dll_startAudioCapture pjmedia_conf_adjust_rx_level by %d", g_audCapClientBoost));
        }
        else
        {
            pjsua_perror(__FILE__, "Error dll_startAudioCapture pjmedia_conf_adjust_rx_level", status);
        }
        if ((status = pjmedia_conf_adjust_tx_level(pjsua_var.mconf,pjsua_var.recorder[app_config.rec_id].slot,0)) == PJ_SUCCESS)
        {
            //                PJ_LOG(5, (THIS_FILE, "dll_startAudioCapture pjmedia_conf_adjust_tx_level by %d", g_audCapServerBoost));
        }
        else
        {
            pjsua_perror(__FILE__, "Error dll_startAudioCapture pjmedia_conf_adjust_tx_level", status);
        }
        hasRecordingStarted = 1;
    }

}

请帮忙


if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
                userCall.hasConnected = true
                pjsua_conf_connect(ci.conf_slot, 0)
                pjsua_conf_connect(0, ci.conf_slot)
                if recorderPortId != PJSUA_INVALID_ID.rawValue {
                    pjsua_conf_connect(ci.conf_slot, recorderPortId)
                }
            }

我们应该在连接声音端口之后连接conf端口。即使您在创建记录器后连接端口,也将其连接到此处。您将录制清晰的声音。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 pjmedia_conf_connect_port 在 pjsip 中执行 SIGABRT 时,录音呼叫崩溃 的相关文章

  • iOS 如何触发视频退出全屏后继续播放?

    我正在构建一个在 iOS 中播放视频的网站 我有一个在 iOS 中工作的全屏按钮 但是退出全屏时视频会暂停 有谁知道一种方法可以强制视频在退出全屏时继续播放 或者如何设置一个侦听器来触发视频在退出全屏时自动播放 这是我的代码
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • TTTAttributedLabel 可点击截断标记

    我有一个 TTTAttributedLabel 并为其指定了一个自定义属性截断标记 NSAttributedString atributedTruncationToken NSAttributedString alloc initWithS
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • 在 iOS 中使用 FB SDK 是否需要 Facebook 的成功审核?

    现在我需要使用Facebook SDK来自我的 iOS 应用程序中的 Facebook 所以我填写了有关我的应用程序的信息developer facebook com应用程序详细信息 但是 当我用我的设备测试我的应用程序时 我可以发布到 F
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • iOS:滚动视图仅在键盘出现后才起作用

    我制作了滚动视图 其中有很多文本字段 我添加了更新的 TPKeyBoardAvoidingScrollView 并将其添加到滚动视图的文件所有者中 我在 h 文件中添加了插座 在 m 文件中综合并添加了行 self view addSubv
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • 如何重新定位或移动 Google Maps SDK 上的当前位置按钮?

    如何将 Objective C 中的当前位置按钮移至我的偏好 现在 我已启用它 但底角有东西挡住了它 Thanks 您可以使用 padding 将按钮向上移动 self mapView padding UIEdgeInsets top 0
  • 为 iOS 应用程序加载基于 SVG 的图像资源

    我从 thenounproject 购买了一个图标作为 SVG 图像 然后我使用一个名为的 macOS 程序Gapplin http gapplin wolfrosch com 将此 SVG 导出为 PNG 图像 它显示为 100x100
  • 查找已用应用程序名称的捆绑包/开发人员

    我正在尝试将应用程序上传到应用程序商店并收到以下错误 很容易理解 The App Name you have entered has already been used 该应用程序不在 iTunes 上 有什么方法可以找出谁拥有该应用程序或
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName

随机推荐