ios - 如何在 iOS 中从呼叫方的呼叫中获取视频窗口?
问题描述
我正在尝试使用 pjsip 使视频通话功能。我正在为此使用 vialerSipLib 演示应用程序。
这是我正在尝试的场景。
从电话 A 呼叫电话 B。音频适用于来电和去电。但问题是,视频正在phoneB(ReceiverSide)上运行,但我无法在phoneA(CallerSide)上获取视频。这是我的视频通话帐户配置。
我正在使用编解码器 H264 进行视频通话。
acc_cfg.vid_in_auto_show = PJ_TRUE;
acc_cfg.vid_out_auto_transmit = PJ_TRUE;
acc_cfg.vid_wnd_flags = PJMEDIA_VID_DEV_WND_BORDER | PJMEDIA_VID_DEV_WND_RESIZABLE;
acc_cfg.vid_cap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV;
acc_cfg.vid_rend_dev = PJMEDIA_VID_DEFAULT_RENDER_DEV;
acc_cfg.reg_retry_interval = 300;
acc_cfg.reg_first_retry_interval = 30;
这是我使用 callid 获取视频窗口的方法。出现了一个黑色的窗口。或者有什么方法可以检查 ci.media 数组是否有有效的视频?
- (void) displayWindowWithVoid: (UIView *) parent call:(VSLCall *)call {
int vid_idx;
pjsua_vid_win_id wid;
vid_idx = pjsua_call_get_vid_stream_idx((int)call.callId);
if (vid_idx >= 0) {
pjsua_call_info ci;
pjsua_call_get_info((int)call.callId, &ci);
wid = ci.media[vid_idx].stream.vid.win_in;
ci.setting.vid_cnt = 1;
pjsua_vid_win_info wi;
if (pjsua_vid_win_get_info(wid, &wi) == PJ_SUCCESS) {
pjsua_vid_win_set_show(wid, true);
UIView *view = (__bridge UIView *)wi.hwnd.info.ios.window;
[parent addSubview:view];
}
} }
如果有人可以告诉我视频通话的客户,那么我可以测试行为。它是应用程序端或服务器端的问题。任何帮助或建议将不胜感激。
解决方案
我让它工作了。发布此答案,因为这可能对其他人有所帮助,并且可以节省他的大部分时间。
您必须更改视频格式
pjmedia_vid_codec_param param;
pjsua_vid_codec_get_param(&videoCodecInfo[i].codec_id, ¶m);
param.ignore_fmtp = PJ_TRUE;
param.enc_fmt.det.vid.size.w = 1280;
param.enc_fmt.det.vid.size.h = 720;
param.enc_fmt.det.vid.fps.num = 30;
param.enc_fmt.det.vid.fps.denum = 1;
param.dec_fmt.det.vid.size.w = 1280;
param.dec_fmt.det.vid.size.h = 720;
可能正是您的服务器支持可能对您有所帮助的格式。如果您需要更多帮助。请告诉我
推荐阅读
- node.js - NestJS:PostgreSQL 中不区分大小写的搜索
- python - Discord.py 大众禁令
- reactjs - 背景图像仅在重新加载页面后显示
- activemq-artemis - 用于灾难恢复的镜像与 HA 数据复制
- php - 使用嵌套的 JSON 对象循环 JSON 数组
- java - 如何更改图层列表中项目的大小?
- python - 为什么我在 adfuller 测试中得到 p 值 0.00000?
- drake - drake gurobi 无法处理二次约束
- image - 如何将 svg 图像放在 Xamarin.Android 应用程序的屏幕中?
- pagination - 我可以在没有 apollo / react-query 的情况下将 React 无限滚动与 GraphQL 和 datoCMS 一起使用吗?