【问题标题】:PJSIP pausing/resuming streamsPJSIP 暂停/恢复流
【发布时间】:2015-05-25 12:41:59
【问题描述】:

我正在将 SIP 应用程序从 PJSIP 1.6 移植到 2.4。 API 在 2.0 版本中发生了变化,我不知道如何访问媒体会话以进行呼叫、暂停/恢复流。

我有一个呼叫 ID,我想切换它的流。在旧 API 中,它非常简单:

const pjmedia_session* session = pjsua_call_get_media_session(call_id);

现在(在 2.4 版本中)这个过程对我来说是不可理解的......谢谢你的帮助!

【问题讨论】:

    标签: stream telephony pjsip


    【解决方案1】:

    根据您想要实现的目标,您可以执行以下操作..

    1. 使用 pjmedia_stream_pause 和 pjmedia_stream_resume 停止/启动 RTP 流。
    2. (对于出站音频)在启用 VAD 的情况下将麦克风增益归零。
    3. (对于视频)使用 pjsua_call_set_vid_strm 来 HOLD/UNHOLD

    如果您尝试启动和停止附加到会议桥的音频流,则可能需要额外的要求。

    【讨论】:

    • 感谢您的输入,但这是我已经知道的内容 :) 诀窍是获取这些操作所需的媒体会话,仅给出呼叫 ID。也许我不够清楚我要完成什么。我正在尝试暂停 ENCODING(传出)流,以使用户静音,但最重要的是,停止传出数据流量。
    【解决方案2】:

    暂停/恢复流,而不是会话。

    auto& call = pjsua_var.call[call_id];
    if (call.media[0].type == PJMEDIA_TYPE_AUDIO) {
        auto stream = call.media[0].strm.a.stream;
        if (stream) {
            pjmedia_stream_pause(stream, PJMEDIA_DIR_ENCODING);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多