【问题标题】:PJSIP Video Call: No video... only blank window is appearing in iOS?PJSIP 视频通话:没有视频……iOS 中只出现空白窗口?
【发布时间】:2018-11-03 12:12:53
【问题描述】:

我正在尝试使用 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 .....呼叫 0:更新媒体..

2018-11-01 11:16:11.981282+0400 SwiftVoiceCallingApp[730:49599] 11:16:11.981 pjsua_media.c .......媒体流 call00: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 .......媒体流 call00: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 ....设置 RX..

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] 进行渲染:格式= 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] 打开:格式=B​​GRA,尺寸=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] 进行捕获:格式= I420,尺寸=352x288 @15:1 fps

2018-11-01 11:16:12.175070+0400 SwiftVoiceCallingApp[730:49599] 11:16:12.175 vid_port.c .........设备前置摄像头 [AVF] 打开:格式=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 .........预览窗口 id 1 为 cap_dev 2 创建,使用内置预览中!

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 ........启动 Darwin 视频流

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] 窗口 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 ........媒体流 call00: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上面已经有视频流了。我还有什么遗漏吗?

【问题讨论】:

    标签: ios pjsip


    【解决方案1】:

    添加帐号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;
            }
    
        }
    }
    

    很高兴为您提供帮助:)

    【讨论】:

    • 那些标志已经启用,但是仍然得到空白的绿色窗口。谢谢你的回答。
    • 我已经更新了我的答案。希望这会对你有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    相关资源
    最近更新 更多