我正在将一个SIP应用程序从PJSIP 1.6移植到2.4。API在2.0版本中发生了变化,我不知道如何访问媒体会话以进行呼叫,暂停/恢复流。
我有一个呼叫id,我想切换它的流。在旧的API中,它非常简单:
const pjmedia_session* session = pjsua_call_get_media_session(call_id);
现在(在2.4版本中)这个过程对我来说是不可理解的…谢谢你的帮助!
根据您想要实现的目标,您可以执行以下操作:
- 使用pjmedia_stream_pause和pjmedia_stream_resume来停止/启动RTP流。
- (用于出站音频)在启用VAD的情况下将麦克风增益调零。
- (用于视频)使用pjsua_call_set_vid_strm来按住/不按住
如果您正在尝试启动和停止连接到会议桥接的音频流,则可能有额外的要求。
不是会话,而是暂停/恢复流。
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);
}
}