在pjsip iPhone中将相机从前切换到后

时间:2019-01-18 11:51:03

标签: iphone sip pjsip

我正在开发pjsip视频通话应用。我想在正在进行的通话中切换预览摄像头。

这是我正在尝试的代码。

pjsua_call_vid_strm_op_param param;
pjsua_call_vid_strm_op_param_default(&param);
param.cap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV;
pj_status_t status = pjsua_call_set_vid_strm(_current_call, 
PJSUA_CALL_VID_STRM_CHANGE_CAP_DEV, &param);
if (status == PJ_SUCCESS)
{
   NSLog(@"Toggle");
}

我无法使用上述代码切换相机。

在pjsip中添加帐户之前,我还添加了以下代码

acc_cfg.vid_in_auto_show = PJ_TRUE;
acc_cfg.vid_out_auto_transmit = PJ_TRUE;
acc_cfg.vid_cap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV;
acc_cfg.vid_rend_dev = PJMEDIA_VID_DEFAULT_RENDER_DEV;

pjmedia_orient orient;
orient = PJMEDIA_ORIENT_ROTATE_90DEG;
pjsua_vid_dev_set_setting(PJMEDIA_VID_DEFAULT_CAPTURE_DEV, 
PJMEDIA_VID_DEV_CAP_ORIENTATION, &orient, PJ_TRUE);

如果还有其他方法,请指导我。

1 个答案:

答案 0 :(得分:2)

pjsua_call_set_vid_strm()已经是正确的方法,只需尝试更改捕获设备ID(即param.cap_dev)。请注意,PJMEDIA_VID_DEFAULT_CAPTURE_DEV表示默认的捕获设备,在iPhone上通常是前置摄像头。

您可以使用pjsua_vid_dev_count()pjsua_vid_dev_get_info()来枚举可用的视频设备。捕获设备应将方向信息(pjmedia_vid_dev_info.dir)设置为PJMEDIA_DIR_CAPTURE。并且设备名称信息(pjmedia_vid_dev_info.name)应该告诉您哪个是后置摄像头。