Comments (23)
I think we have two issues: 1. Lack of support for AudioWorklet in iOS 2. Something not correct in the WebRTC implementation. If I try https://test.webrtc.org on iOS devices, it works fine but the jacktrip-webrtc does not. I am STILL (!!!!) trying to debug the iOS version but there is a lack of console tools on iOS ☹ David
If you happen to have a Mac, you can connect a remote DevTools running in Safari on the Mac to your iOS device. The iOS device must be connected via USB and there are some other steps to enable the functionality. Here's a guide that may help: https://medium.com/better-programming/debugging-your-iphone-mobile-web-app-using-safari-development-tools-71240657c487
Apparently it's also possible to use Chrome's DevTools if needed, here's an article about that: https://medium.com/@nikoloza/how-to-debug-remote-ios-device-using-chrome-devtools-f44d697003a7
Best of luck!
from jacktrip-webrtc.
Hi David,
thanks for checking out the application.
So, I am not very familiar with the Apple ecosystem, but, if I am correct, on both iPads and iPhones the default browser is Safari.
Unluckily, as reported by caniuse: https://caniuse.com/?search=AudioWorklet, AudioWorklets, which is the technology which allows us to extract uncompressed audio from MediaStreams, is not yet supported on Safari (and I do not know if they will ever be supported)
I don't know if it is possible on iPads and iPhone, but if you can, try again using a different browser. You can try with either Mozilla Firefox or any Chromim based web browser (both do support AudioWorklets) and see if it is working or not
Cheers,
Matteo
from jacktrip-webrtc.
from jacktrip-webrtc.
Hi David,
well... It may be something related to both AudioWorklets and WebRTC.
Unfortunately I do not have any iOS device I can test this on, so I need your help to debug this.
If you can access the developer console, can you post a screenshot of it? It may report some useful information about what it is not working
from jacktrip-webrtc.
Additionally, JackTrip-WebRTC has also a WebRTC-only mode, which in order to be activated requires you to modify a line of code...
If you want you can test if the WebRTC-only mode works.
To activate it you need to modify line 6 of client/public/js/room/client.js changing
const USE_MEDIA_AUDIO = false;
to
const USE_MEDIA_AUDIO = true;
Cheers,
Matteo
from jacktrip-webrtc.
from jacktrip-webrtc.
I've tried with the USE_MEDIA_AUDIO set to true and the first page fails to load - I see a repeated "warning" error message in the URL box but it is too quick to read.
Ok, that's kinda strange...
I've not done any debug with iOS before but I'll have a look when I can in the next few days.
Ok, thank you :)
I'll try and setup a debug session to Safari - this is not something I've done before so it will be new for me to learn!
If you can, try (also) with Chrome or Firefox, since those should support AudioWorklets.
During the development I tested this web app with Chrome on an Android smartphone and everything was working
Do you connect to the http or https web server?
Matteo
from jacktrip-webrtc.
from jacktrip-webrtc.
I've just retested with HTTP but with just HTTP my PC also doesn't ask for camera/microphone access (Chrome and Firefox).
If you connect from a different device from where the web server is launched you need to use HTTPS. If the connection is not HTTPS then the getUserMedia function will not work. If i recall correctly, in Android, in order to access mic and camera you need to be on HTTPS. I guess the same is for iOS
If you can, try (also) with Chrome or Firefox, since those should support AudioWorklets.
What I mean is that while you do a debug session on Safari, please do also one debug session on Chrome or Firefox, to see if there are the same errors
from jacktrip-webrtc.
from jacktrip-webrtc.
Hi David,
well that's unfortunate...
In the meantime, have you tried to connect to the HTTPS version instead of the HTTP one? If not, please give it a try and let me know if over HTTPS you experience the same behaviour
Thanks,
Matteo
from jacktrip-webrtc.
from jacktrip-webrtc.
Hi David,
Maybe this can help you with the debugging: https://stackoverflow.com/questions/38179396/is-there-any-way-to-debug-chrome-in-any-ios-device
It seems that you can access Chrome console directly from the iOS device by accessing chrome://inspect
Hope it helps 😃
Cheers,
Matteo
from jacktrip-webrtc.
from jacktrip-webrtc.
this worked until iOS 14 but now no longer works frowning_face
That's unlucky...
from jacktrip-webrtc.
Chrome and Firefox on iOS are just UI and user data sync service wrappers around a hobbled version of Safari. Apple doesn't allow any browser engine other that Safari on iOS, so Google and Mozilla have opted to at least have a branding foothold there. Apple also imposes some limitations to the Web APIs that third party browser apps on iOS have access to, so non-Safari browsers on iOS will always have strictly inferior Web API support.
from jacktrip-webrtc.
oh wow @capnmidnight I did not know that. That is terrible! ha!
from jacktrip-webrtc.
Hi @capnmidnight,
Thank you very much for the clarification! I actually didn't know that.
So, since, from what I understood, they are kind of based on Safari, and since, as reported previously, https://caniuse.com/?search=AudioWorklet, Safari does not support AudioWorklets, I guess that in order to have this application work on iOS, we have to wait that Safari support AudioWorklets (if it will ever support them...)
It is kind of strange though that the implementation which uses only WebRTC is not working as well... May be due to some kind of missing elements which I am currently not aware of. Could be interesting to see a screenshot of the browser console on iOS (if it is something possible)
Thank you again 😃
from jacktrip-webrtc.
from jacktrip-webrtc.
I am STILL (!!!!) trying to debug the iOS version but there is a lack of console tools on iOS frowning_face
Yeah, no worries! Try and if you find something useful I will be pleased to have a look at it 😃
Thank you @dlake02
from jacktrip-webrtc.
Hi @rezonant,
thank you for the help 😃
from jacktrip-webrtc.
A much delayed response, but I just happened to come across this issue. It sounds like, for the way worklets are being used, it may be possible to use a workaround:
Safari on iOS and macOS does implement the WebAudio API script processor node which also allows you to extract uncompressed audio data. While it's deprecated and runs on-thread, it's a good fallback for browsers that don't yet have web audio worklets available. And, if all you're doing is extracting the raw data and sending it, the hit for running on-thread should be minimal.
from jacktrip-webrtc.
I recently discovered that Safari is supporting AudioWorklets now
As reported by can i use, Safari on iOS and macOS it seems that it does now, or at least they are adding support for them (🎆 🎉 ), so I guess we should check this again
from jacktrip-webrtc.
Related Issues (16)
- Loopback: no audio heard HOT 2
- "TypeError: audioContext.audioWorklet is undefined" error when joining a room over port 8000 HOT 11
- Sorry, opened this by mistake HOT 1
- Audio routing to multi-channel output a-la Jack HOT 3
- Audio link breaks down after some time HOT 15
- Audio Only HOT 1
- OpenSSL location on macOS HOT 3
- WebTransport and Jacktrip-webrtc HOT 9
- [question] Jacktrip-WebRTC community HOT 3
- [idea] Use wasm in web workers HOT 8
- .env file sample HOT 5
- STATIC_PATH instead of STATIC HOT 2
- OPENSSL_PATH instead of PATH_OPENSSL HOT 2
- more time to read, please! HOT 3
- what about... jack? HOT 26
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jacktrip-webrtc.