首页 > 解决方案 > 在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);

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

标签: iphonesippjsip

解决方案


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


推荐阅读