PJSIP视频通话:没有视频... iOS中仅出现空白窗口?

时间:2018-11-03 12:12:54

标签: ios pjsip

我正在尝试使用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上面已经有视频流。我还想念其他东西吗?

1 个答案:

答案 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;
        }

    }
}

很高兴为您提供帮助:)

相关问题