我正在开发pjsip视频通话应用。我想在正在进行的通话中切换预览摄像头。
这是我正在尝试的代码。
pjsua_call_vid_strm_op_param param;
pjsua_call_vid_strm_op_param_default(¶m);
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, ¶m);
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);
如果还有其他方法,请指导我。
答案 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
)应该告诉您哪个是后置摄像头。