我正在尝试使用pjsip 2.7.1在我的iOS应用程序中添加视频通话功能。我已遵循此链接https://trac.pjsip.org/repos/wiki/Video_Users_Guide
中提到的步骤if (pjsua_vid_win_get_info(i, &wi) == PJ_SUCCESS) {
dispatch_async(dispatch_get_main_queue(), ^{
UIView* videoView = (__bridge UIView *)wi.hwnd.info.ios.window;
/* Resize it to fit width */
videoView.bounds = CGRectMake(0, 0, 375,667);
/* Center it horizontally */
videoView.center = CGPointMake(375/2.0, 667/2.0);
NSLog(@"******* Native Window Called ******** ");
}
进行视频通话时,一切似乎都很好,但在日志中没有发现任何问题。
2018-11-01 11:16:11.980945 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.980 pjsua_media.c ..... Call 0:更新媒体。
2018-11-01 11:16:11.981282 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.981 pjsua_media.c .......媒体流调用00:0被销毁
2018-11-01 11:16:11.981801 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.981 pjsua_aud.c ......音频通道更新..
2018-11-01 11:16:11.982020 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.981 strm0x14c817228 ....... VAD暂时禁用
2018-11-01 11:16:11.983647 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.983 strm0x14c817228 .......编码器流已启动
2018-11-01 11:16:11.994218 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.994 strm0x14c817228 .......解码器流已启动
2018-11-01 11:16:11.995006 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.994 pjsua_media.c ......音频已更新,流#0:PCMU(sendrecv)
2018-11-01 11:16:11.995355 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.995 pjsua_media.c .......媒体流调用00:1被销毁
2018-11-01 11:16:11.995506 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:11.995 pjsua_vid.c ......视频频道更新..
2018-11-01 11:16:12.021673 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.021 vstenc0x14c813e28 .......编码器流已启动
2018-11-01 11:16:12.022508 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.022 vstdec0x14c813e28 .......解码器流已启动
2018-11-01 11:16:12.023527 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.023 pjsua_vid.c .......设置接收..
2018-11-01 11:16:12.024107 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.024 pjsua_vid.c ........创建视频窗口:type = stream,cap_id = -1, rend_id = 0
2018-11-01 11:16:12.024864 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.024 vid_port.c .........打开用于渲染的设备OpenGL渲染器[OpenGL]:format = I420,大小= 656x656 @ 22:1 fps
2018-11-01 11:16:12.153215 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 ios_opengl_dev.c ......... iOS OpenGL ES渲染器成功创建
2018-11-01 11:16:12.153426 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 vid_port.c .........设备OpenGL渲染器[OpenGL]已打开:format = BGRA,大小= 656x656 @ 22:1 fps
2018-11-01 11:16:12.153551 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 pjsua_vid.c .........为cap_dev = -1 rend_dev =创建的流窗口ID 0 0
2018-11-01 11:16:12.153590 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 pjsua_vid.c .........创建了窗口0
2018-11-01 11:16:12.153629 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 ios_opengl_dev.c ........启动ios opengl流
2018-11-01 11:16:12.153758 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 pjsua_vid.c .......设置TX ..
2018-11-01 11:16:12.153805 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.153 pjsua_vid.c ........创建视频窗口:type = preview,cap_id = 2,rend_id = 0
2018-11-01 11:16:12.155163 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.155 vid_port.c .........打开设备前置摄像头[AVF]进行捕获:format = I420,尺寸= 352x288 @ 15:1 fps
2018-11-01 11:16:12.175070 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.175 vid_port.c .........打开了设备前置摄像头[AVF]:format = I420,尺寸= 352x288 @ 15:1 fps
2018-11-01 11:16:12.179564 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.179 darwin_dev.m .........本机预览已初始化
2018-11-01 11:16:12.179708 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.179 pjsua_vid.c .........为cap_dev 2创建的预览窗口ID 1,使用内置在预览中!
2018-11-01 11:16:12.179743 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.179 pjsua_vid.c .........创建了窗口1
2018-11-01 11:16:12.179818 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.179 darwin_dev.m ........启动达尔文视频流
2018-11-01 11:16:12.560349 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.560 pjsua_media.c ......视频已更新,流#1:H264(sendrecv)
2018-11-01 11:16:12.560565 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.560 pjsua_aud.c ..... Conf连接:2-> 0
2018-11-01 11:16:12.560631 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.560 conference.c ......端口2(sip:1001@192.168.100.57)发送到端口0 (iPhone IO设备)
2018-11-01 11:16:12.560680 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.560 pjsua_aud.c ..... Conf连接:0-> 2
2018-11-01 11:16:12.560729 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:12.560 conference.c ......端口0(iPhone IO设备)传输到端口2(sip:1001) @ 192.168.100.57)
2018-11-01 11:16:12.560765 + 0400 SwiftVoiceCallingApp [730:49599] Windows ID:0
2018-11-01 11:16:12.560806 + 0400 SwiftVoiceCallingApp [730:49599]媒体ID:1
2018-11-01 11:16:12.560841 + 0400 SwiftVoiceCallingApp [730:49599] 1. PJSUA_CALL_MEDIA_ACTIVE
2018-11-01 11:16:12.594432 + 0400 SwiftVoiceCallingApp [730:49349] *******调用了本机窗口********
挂断后:
2018-11-01 11:16:32.181814 + 0400 SwiftVoiceCallingApp [730:49599]外向通话状态ID为:200
2018-11-01 11:16:32.187486 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:32.187 pjsua_media.c ......呼叫0:取消初始化媒体..
2018-11-01 11:16:32.203479 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:32.203 pjsua_media.c ........媒体流调用00:0被销毁
2018-11-01 11:16:32.204868 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:32.204 pjsua_vid.c ........停止视频流..
2018-11-01 11:16:32.232410 + 0400 SwiftVoiceCallingApp [730:49599] 11:16:32.232 darwin_dev.m .........正在停止达尔文视频流
但是,我没有在UIView中找到任何视频。
UIView* videoView = (__bridge UIView *)wi.hwnd.info.ios.window;
我刚刚将此videoView作为子视图添加到了ViewController的视图中
self.view.addSubView:videoView
我觉得videoView上面已经有视频流。我还想念其他东西吗?
答案 0 :(得分:0)
默认情况下,您需要在添加帐户 pjsua_acc_add 的同时启用视频自动显示和视频传输功能。
acc_cfg.vid_in_auto_show = PJ_TRUE;
acc_cfg.vid_out_auto_transmit = PJ_TRUE;
然后使用以下方法显示视频预览
int vid_idx;
pjsua_vid_win_id wid;
vid_idx = pjsua_call_get_vid_stream_idx(*call_id);
if (vid_idx >= 0) {
pjsua_call_info ci;
pjsua_call_get_info(*call_id, &ci);
wid = ci.media[vid_idx].stream.vid.win_in;
if (wid >= 0) {
pjsua_vid_win_info wi;
pj_status_t myStatus;
myStatus = pjsua_vid_win_get_info(wid, &wi);
if (myStatus == PJ_SUCCESS) {
UIView *view = (__bridge UIView *)wi.hwnd.info.ios.window;
}
}
}
很高兴为您提供帮助:)