cordova-plugin-iosrtc: [master] Outgoing video stream is no longer working on iOS 13 and Xcode 11 beta

Hello,

I’ve just installed iOS 13.1 Beta on my iPhone and noticed that outgoing video is no longer working. After upgrading plugin to the latest version (previously used version is 4.0.2), the issue is still remaining. This does not seem to be a renderer issue, because I can see incoming video streams; the issues reproduces only for outgoing streams. A black square appears in place where should be my outgoing video view, and the other side cannot see my video, either.

Here is what’s going on in logs when I enable the camera for an ongoing call:

2019-08-30 18:26:00.825844+0300 My App Name[1171:317447] iosrtcPlugin#getUserMedia()
2019-08-30 18:26:00.825981+0300 My App Name[1171:317447] PluginGetUserMedia#call()
2019-08-30 18:26:00.829510+0300 My App Name[1171:317447] PluginGetUserMedia#call() | video authorization: authorized
2019-08-30 18:26:00.830827+0300 My App Name[1171:317447] PluginGetUserMedia#call() | video requested (specified device id: 'com.apple.avfoundation.avcapturedevice.built-in_video:1')
2019-08-30 18:26:00.831406+0300 My App Name[1171:317447] PluginGetUserMedia#call() | chosen video device: <AVCaptureFigVideoDevice: 0x147e41bb0 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>
2019-08-30 18:26:00.844505+0300 My App Name[1171:317447] PluginMediaStream#init()
2019-08-30 18:26:00.844641+0300 My App Name[1171:317447] PluginMediaStreamTrack#init()
2019-08-30 18:26:00.844842+0300 My App Name[1171:317447] PluginMediaStreamTrack#run() [kind:video, id:70DD33E1-6235-4D66-B68C-DFD29992BD41]
2019-08-30 18:26:00.844899+0300 My App Name[1171:317447] PluginMediaStream#run()
2019-08-30 18:26:00.845538+0300 My App Name[1171:317447] THREAD WARNING: ['iosrtcPlugin'] took '19.727295' ms. Plugin should use a background thread.
2019-08-30 18:26:00.852460+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamTrack_setListener()
2019-08-30 18:26:00.852668+0300 My App Name[1171:317467] PluginMediaStreamTrack#setListener() [kind:video, id:70DD33E1-6235-4D66-B68C-DFD29992BD41]
2019-08-30 18:26:00.852905+0300 My App Name[1171:317447] iosrtcPlugin#MediaStream_setListener()
2019-08-30 18:26:00.853019+0300 My App Name[1171:317467] PluginMediaStream#setListener()
2019-08-30 18:26:00.853221+0300 My App Name[1171:317447] iosrtcPlugin#RTCPeerConnection_addStream()
2019-08-30 18:26:00.853409+0300 My App Name[1171:317467] PluginRTCPeerConnection#addStream()
2019-08-30 18:26:00.854124+0300 My App Name[1171:317447] [TCCallKit] onVideoAdded
2019-08-30 18:26:00.855400+0300 My App Name[1171:317497] PluginRTCPeerConnection | onnegotiationeeded
2019-08-30 18:26:00.973638+0300 My App Name[1171:317447] THREAD WARNING: ['NativePageTransitions'] took '114.470947' ms. Plugin should use a background thread.
2019-08-30 18:26:00.975157+0300 My App Name[1171:317447] iosrtcPlugin#RTCPeerConnection_createOffer()
2019-08-30 18:26:00.975654+0300 My App Name[1171:317476] PluginRTCPeerConnection#createOffer()
2019-08-30 18:26:00.976804+0300 My App Name[1171:317476] PluginRTCPeerConnectionConstraints#init()
2019-08-30 18:26:00.976881+0300 My App Name[1171:317476] PluginRTCPeerConnectionConstraints#getConstraints()
2019-08-30 18:26:00.977921+0300 My App Name[1171:317476] PluginRTCPeerConnectionConstraints#deinit()
2019-08-30 18:26:00.978293+0300 My App Name[1171:317497] PluginRTCPeerConnection#createOffer() | success callback
2019-08-30 18:26:00.990259+0300 My App Name[1171:317447] iosrtcPlugin#RTCPeerConnection_setLocalDescription()
2019-08-30 18:26:00.990459+0300 My App Name[1171:317476] PluginRTCPeerConnection#setLocalDescription()
2019-08-30 18:26:00.995002+0300 My App Name[1171:317497] PluginRTCPeerConnection | onsignalingstatechange [signalingState:Optional("have-local-offer")]
2019-08-30 18:26:01.002659+0300 My App Name[1171:317497] PluginRTCPeerConnection#setLocalDescription() | success callback
2019-08-30 18:26:01.066928+0300 My App Name[1171:317447] iosrtcPlugin#new_MediaStreamRenderer()
2019-08-30 18:26:01.067339+0300 My App Name[1171:317447] PluginMediaStreamRenderer#init()
2019-08-30 18:26:01.083873+0300 My App Name[1171:317447] Metal GPU Frame Capture Enabled
2019-08-30 18:26:01.084272+0300 My App Name[1171:317447] Metal API Validation Enabled
2019-08-30 18:26:01.162637+0300 My App Name[1171:317447] PluginMediaStreamRenderer#run()
2019-08-30 18:26:01.162725+0300 My App Name[1171:317447] THREAD WARNING: ['iosrtcPlugin'] took '95.817871' ms. Plugin should use a background thread.
2019-08-30 18:26:01.163036+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamRenderer_refresh()
2019-08-30 18:26:01.163578+0300 My App Name[1171:317447] PluginMediaStreamRenderer#refresh() [elementLeft:185.0, elementTop:978.0, elementWidth:125.0, elementHeight:85.0, videoViewWidth:125.0, videoViewHeight:85.0, visible:true, opacity:1.0, zIndex:0.0, mirrored:false, clip:true, borderRadius:3.0]
2019-08-30 18:26:01.163920+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamRenderer_render()
2019-08-30 18:26:01.163991+0300 My App Name[1171:317447] PluginMediaStreamRenderer#render()
2019-08-30 18:26:01.193652+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamRenderer_refresh()
2019-08-30 18:26:01.193826+0300 My App Name[1171:317447] PluginMediaStreamRenderer#refresh() [elementLeft:185.0, elementTop:978.0, elementWidth:125.0, elementHeight:85.0, videoViewWidth:125.0, videoViewHeight:85.0, visible:true, opacity:1.0, zIndex:0.0, mirrored:false, clip:true, borderRadius:3.0]
2019-08-30 18:26:01.286278+0300 My App Name[1171:317447] iosrtcPlugin#RTCPeerConnection_setRemoteDescription()
2019-08-30 18:26:01.286527+0300 My App Name[1171:317476] PluginRTCPeerConnection#setRemoteDescription()
2019-08-30 18:26:01.298347+0300 My App Name[1171:317497] PluginRTCPeerConnection | onsignalingstatechange [signalingState:Optional("stable")]
2019-08-30 18:26:01.303718+0300 My App Name[1171:317497] PluginRTCPeerConnection#setRemoteDescription() | success callback
2019-08-30 18:26:01.317835+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamRenderer_refresh()
2019-08-30 18:26:01.318004+0300 My App Name[1171:317447] PluginMediaStreamRenderer#refresh() [elementLeft:185.0, elementTop:410.0, elementWidth:125.0, elementHeight:85.0, videoViewWidth:125.0, videoViewHeight:85.0, visible:true, opacity:1.0, zIndex:0.0, mirrored:false, clip:true, borderRadius:3.0]
2019-08-30 18:26:01.319030+0300 My App Name[1171:317447] iosrtcPlugin#MediaStreamRenderer_refresh()
2019-08-30 18:26:01.319208+0300 My App Name[1171:317447] PluginMediaStreamRenderer#refresh() [elementLeft:185.0, elementTop:410.0, elementWidth:125.0, elementHeight:85.0, videoViewWidth:125.0, videoViewHeight:85.0, visible:true, opacity:1.0, zIndex:0.0, mirrored:false, clip:true, borderRadius:3.0]

No obvious error messages, but no video, either. Could you please take a look?

Thanks, Andrey.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 86 (47 by maintainers)

Most upvoted comments

@hthetiot The initial issue has been solved. Thank you very much for your help! Regarding the hook, I’ll do some additional debugging and file an issue as you suggested

Please do not comment on an open or closed issue out of topic problems,

I will only close that issue aka #375 via master with https://github.com/cordova-rtc/cordova-plugin-iosrtc/blob/master/CHANGELOG.md#version-600

if @EternallLight @myhhx @cah-dunn @pethessa confirm it’s fix iOS 13 and Xcode 11, I will close and release master (cd1a545a5bdbc6afec50713068833433dc89a1b7) as 6.0.0

I will make an issue Announcement] cordova-plugin-iosrtc Version 6.0.x notes like for 5.0.x (https://github.com/cordova-rtc/cordova-plugin-iosrtc/issues/398) but we need original reporters confirm and testing this

  • Cordova version: 8.1.2
  • cordova-ios: 4.5.5
  • Plugin version: 6.0.0 (master branch)
  • iOS version: 13.1.2
  • Xcode version: 11.1(11A1027)
  • webrtc-adapter: 7.3.0

@hthetiot #399 (8db4bc) compiles on Xcode 11.0 and runs on iOS 13.1.2 for me. I’m only testing basic connection, video & audio as we use. Haven’t tried any of the canvas capture.

@hthetiot Unfortunately, there is one error when building #task/libwebrtc-update on Phonegap Build:

/project/InRemote/Plugins/cordova-plugin-iosrtc/PluginRTCAudioOutputController.swift:70:41: error: 'setCategory' is unavailable in Swift
                                try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playAndRecord)
                                                                    ^~~~~~~~~~~
AVFoundation.AVAudioSession:23:15: note: 'setCategory' has been explicitly marked unavailable here
    open func setCategory(_ category: AVAudioSession.Category) throws
              ^

I use the same config as for 5.0.2+:

<preference name="swift-version" value="4.2"/>
<preference name="deployment-target" value="10.2"/>

i use this liowebrtc for our app, but there’s no getUserMedia with ios wkwebview.

https://github.com/lazorfuzz/react-liowebrtc

so i install cordova-plugin-iosrtc to make getUserMedia working but the rest still use liowebrtc.

patching liowebrtc

if (device.platform === 'iOS') {
      if (!navigator.mediaDevices) {
        navigator.mediaDevices = {};
        navigator.mediaDevices.getUserMedia = cordova.plugins.iosrtc.getUserMedia;
      }
    }

its working fine on ios 12, but after testing on 13

the console print TypeError: undefined is not an object (evaluating ‘this.pc.addStream.bind’)

Hi, can someone help me. Install this plugin via capacitor and have error: ‘AppKit/NSOpenGLView.h’ file not found (RTCNSGLVideoView.h line 32) when try to build project in Xcode

Version 5.0.3

@EternallLight

Using SFSafariViewController is actually using safari’s webrtc implementation. In other words, your js application code can be run on safari without changing it. At this time, it has nothing to do with cordova-plugin-iosrtc.

用SFSafariViewController实际上用的是safari的webrtc实现 也就是说你的js应用代码不用改就可以在safari上跑 这时已经和cordova-plugin-iosrtc没有关系了

Added Xcode 11 on travis and task/ios-13 branch to start debugging.