在 pjsip 中从前向后切换摄像头 iPhone

Switching camera from front to back in pjsip iPhone

我正在开发 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);

如果有其他方法请指导。

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) 应该会告诉你哪个是后置摄像头。