-
-
Notifications
You must be signed in to change notification settings - Fork 340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PluginMediaStreamRenderer is not called #324
Comments
Hi , I 've had the same pain :). video.src = URL.createObjectURL(stream); // set up src attribute once stream is ready |
i've did a bit of research but i couldn't find a solution yet. the xhr request in the handleVideo function (cordova-plugin-iosrtc.js) has a problem. with the xhr response type 'blob' the event 'onload' will never raised and so the rendering of the stream never starts. mayb a security 'feature' in ios 11? |
Are you using a framework like Angular, React or Vue.js? |
no. i'm using plain cordova. started debugging with a naked cordova app with plugins whitelist, ios-camera-permissions, iosrtc and swift-support. i've tested some debug-code inside the plugin-scripts and i've compared with ios10. same app works with ios10 without any error. ios11 btw ... the video element is every time still there and visible. you could approve by setting the css background-color |
video.src = URL.createObjectURL(stream); // set up src attribute once stream is ready This lines of code makes getUserMedia work, but can I use cordova.plugins with remote loaded url? |
in my case I had to disable the adapter and he renderer started working for remote streams |
Certainly due old webrtc-adapter version work version webrtc-adapter@7.2.9 |
Yes could be due CSP error. |
I also have this issue, and looked a bit into it. While I'm not 100% sure on the why, the reason for this is that the MutationObserver in videoElementsHandler.js is not called when the 'srcObject' attribute of a video tag is changed. I don't know if this is a WkWebView issue or sthing else, so this might be just a symptom, that the MutationObserver is not called in this case.. but it is called if you modify the 'src' or 'hidden' attribute of the video tag (the 'hidden' is not added to the filter in the source code, I just found out by experimenting with it.. ie removing the filters, or adding others, to see which one works. In my code I modify the srcObject and hidden attribute at the same time, ie srcObject=videoStream hidden=!videoStream) And thanks to everyone involved in this plugin, and keeping it alive! |
Thank you for details @partnerparticle I will look into it on next release 5.0.3 I have too much changes in 5.0.2 already, right now calling |
@partnerparticle can you share a snippet of your changes for me to possibly release this fix on 5.0.2 or the next release depending the time you provide the sample changes. |
@hthetiot I don't have a fix for this, I was only trying to find the root cause of the problem. My modifications in videoElementsHandler.js were just to serve this investigation and it's something that works "just for me", it's not a general solution. |
@partnerparticle I dont experience any issue using WkWebView and srcObject = stream. I'm closing that issue because I have tested the srcObject in production and is work great. |
@hthetiot I am glad that for you is working, although for me is not (with the iOS and device that I mentioned). I understand that this is open source and I have no demands here, I was just happy to find this open issue thinking is related to mine. Thank you for your work! |
Dear @partnerparticle,
Yes we non longer support The reason it was working for me it's because I was calling I have confirmed that on any Browser (Chrome, Firefox, Safari) the MutationObserver fail to observe Now the good news, I have confirmed that instead it does trigger Script to test VideoElement.srcObject MutationObserver and events:
Make sure to read the Thank you again, your persistance to explain your issue helped be to understand the false positive tests i was doing and forced me to test |
Closing cause fixed on next incoming 5.0.3 release. |
Great to hear that @hthetiot , thanks for confirming, and finding a work around. p.s. I read the Changelog only after I wrote my reply, and saw what you meant by removing the video.src observe, but did not edit my reply :) |
@hthetiot I tested the changes from commit a8a1fc1 with my sources from 5.0.1, and it works, thanks for the workaround! However, the reason that I mentioned my local copy of 5.0.1 instead of 5.0.3, is because from 5.0.2 the plugin does not work for me anymore, due to errors on addTrack(). Anyway, this is a separate issue, unrelated to this one.
|
I do not experience this issue. The error you get is possibly from
Finally, if you want people that had issues with iOS 13 successfully used this branch: Note: I do use 5.0.3 in production without issues: |
Thank you for your feedback, I will have a look into what you wrote. The issue only comes from 5.0.2 onward, with 5.0.1 is ok. My app code did not change. |
Can you show how you add Stream to PeerConnection.
This should also works for testing
|
I only had time to run your latest snippet (getUserMedia...), and got this:
|
Ok, thank you, it appear that you get "ERROR: video track not added" and "ERROR: audio track not added" cause it's already added to the same localStream. Beside this errors, what symptom do you get ? |
No video, audio in the app (local or remote). |
I'm looking into it, will keep you posted. |
Dear @partnerparticle,
In order to assist you with detecting Callbacks usage instead of Promise, I have added the following changes on each API that are now Promise only b163786 I'm going to hold a bit before releasing 5.0.4 with this changes, to test if you can do the following.
This should assist you to debug if there is any existing callbacks API calls. |
One last thing.
Should result in the following: |
Thank you, I will check and let you know. We can also move this to a new issue if needed, I suppose it has nothing to do with the original issue. But I don't mind conversing here either, if it does not bother you. |
I'm fine for now keeping it there, until we find the real reason. |
@hthetiot , thank you for the detailed analysis and assistance.
|
good to hear that callback debug helped :) |
After rewriting the callbacks to promises, I got video/audio, so all good on this front. And also srcObject finally works as it should, thank you again :) Additional question: did something change in enumerateDevices()? I'll attach here those logs, maybe I'm reading them wrong. |
|
@partnerparticle Can you report this issue with enumerateDevices in a separate issue (simply copy past what you wrote with the logs), I will check this one separately and attempt to fix for 5.0.4. Thank you for the feedback |
Sure, thank you. See #392 |
For last comment see #392 (comment) |
PluginMediaStreamRenderer is not called. iOS 11.2.1 (iPhone 5s) and macOS High Sierra 10.13.2.
My video element which is added to the DOM after the DOM is rendered initially:
I'm adding the stream to this video element:
But there is not any PluginMediaStreamRenderer notification in my log:
OnAddStream is called when the stream is assigned to the video element:
2018-01-07 15:07:41.970931+0100 DemoApp[274:12025] OnAddStream
What can be the problem? I'm already frustrated.
Best regards
The text was updated successfully, but these errors were encountered: