This message was deleted.
# helpdesk
s
This message was deleted.
d
can you be more specific? which SDK/platform are you referring to. is there a bug filed?
l
Im using JS sdk. In chromium based browsers there are restriction for autoplaying audio tags. And i see that error sometimes in my app that audio can be played only using user gestures
d
Did you check out Audio playback docs ?
l
Nope. I had missed this. Sorry for taking your time 🙏
👍 1
This is working. But whenever a new participant connects, it asks for user gesture. is this how it works ?
d
it shouldn't do that.. can you turn on debug logging
setLogLevel('debug')
and post the client logs that you see when new participants join?
l
chunk-vendors.e0e9125d.js:316 room event {event: 'participantConnected', args: Array(1)}args: [Ba]event: "participantConnected"[[Prototype]]: Object chunk-vendors.e0e9125d.js:316 room event {event: 'trackPublished', args: Array(2)} chunk-vendors.e0e9125d.js:316 room event {event: 'connectionQualityChanged', args: Array(2)} chunk-vendors.e0e9125d.js:316 connection quality changed karthiksirsikar@teslon.io-3 excellent chunk-vendors.e0e9125d.js:316 received server offer {RTCSdpType: 'offer', signalingState: 'stable'} chunk-vendors.e0e9125d.js:316 room event {event: 'trackSubscriptionPermissionChanged', args: Array(3)} chunk-vendors.e0e9125d.js:316 room event {event: 'trackSubscribed', args: Array(3)} chunk-vendors.e0e9125d.js:316 subscribed to track TR_AMtMsc8K8Hph6E karthiksirsikar@teslon.io-3 app.a3c7efa6.js:1 trackSubscribed Ba {_events: {…}, _eventsCount: 12, _maxListeners: undefined, audioLevel: 0, isSpeaking: false, …} Ha {_events: {…}, _eventsCount: 7, _maxListeners: undefined, metadataMuted: false, handleMuted: ƒ, …} chunk-vendors.e0e9125d.js:316 could not playback audio DOMException: play() can only be initiated by a user gesture. Ns.handleAudioPlaybackFailed @ chunk-vendors.e0e9125d.js:316 Or.emit @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 Promise.catch (async) attach @ chunk-vendors.e0e9125d.js:316 attach @ chunk-vendors.e0e9125d.js:316 mounted @ app.a3c7efa6.js:1 In @ chunk-vendors.e0e9125d.js:63 Ni @ chunk-vendors.e0e9125d.js:63 insert @ chunk-vendors.e0e9125d.js:63 O @ chunk-vendors.e0e9125d.js:63 (anonymous) @ chunk-vendors.e0e9125d.js:63 Oi.e._update @ chunk-vendors.e0e9125d.js:63 i @ chunk-vendors.e0e9125d.js:63 e.get @ chunk-vendors.e0e9125d.js:63 e.run @ chunk-vendors.e0e9125d.js:63 Gi @ chunk-vendors.e0e9125d.js:63 (anonymous) @ chunk-vendors.e0e9125d.js:63 Vn @ chunk-vendors.e0e9125d.js:63 Promise.then (async) Hn @ chunk-vendors.e0e9125d.js:63 Kn @ chunk-vendors.e0e9125d.js:63 Xi @ chunk-vendors.e0e9125d.js:63 e.update @ chunk-vendors.e0e9125d.js:63 e.notify @ chunk-vendors.e0e9125d.js:63 set @ chunk-vendors.e0e9125d.js:63 (anonymous) @ app.a3c7efa6.js:1 u @ chunk-vendors.e0e9125d.js:216 (anonymous) @ chunk-vendors.e0e9125d.js:216 (anonymous) @ chunk-vendors.e0e9125d.js:216 a @ chunk-vendors.e0e9125d.js:79 s @ chunk-vendors.e0e9125d.js:79 (anonymous) @ chunk-vendors.e0e9125d.js:79 t @ chunk-vendors.e0e9125d.js:121 (anonymous) @ chunk-vendors.e0e9125d.js:79 t @ app.a3c7efa6.js:1 (anonymous) @ app.a3c7efa6.js:1 r.emitEvent @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 Or.emit @ chunk-vendors.e0e9125d.js:316 emit @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 Or.emit @ chunk-vendors.e0e9125d.js:316 emit @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 Or.emit @ chunk-vendors.e0e9125d.js:316 setTrack @ chunk-vendors.e0e9125d.js:316 addSubscribedMediaTrack @ chunk-vendors.e0e9125d.js:316 onTrackAdded @ chunk-vendors.e0e9125d.js:316 (anonymous) @ chunk-vendors.e0e9125d.js:316 Or.emit @ chunk-vendors.e0e9125d.js:316 cr.subscriber.pc.ontrack @ chunk-vendors.e0e9125d.js:316 a @ chunk-vendors.e0e9125d.js:316 a @ chunk-vendors.e0e9125d.js:316 Show 23 more frames chunk-vendors.e0e9125d.js:316 room event {event: 'audioPlaybackChanged', args: Array(1)}args: Array(1)0: falselength: 1[[Prototype]]: Array(0)event: "audioPlaybackChanged"[[Prototype]]: Object
this is when 3rd partcpant joined. i had shown a button on ui when the 2nd participant joined and called
startAudio()
after the click.
and i noticed one more thing. When i first called
startAudio()
the
AudioPlaybackStatusChanged
event got fired but the
room.canPlayAudio
was still false. and when i call
startAudio()
again
room.canPlayAudio
became true
d
please include the full logs from when the first participant joined. Uploading to a Github gist (or something similar) would be helpful.
d
thanks, it does appear to be firing
audioPlaybackChanged
multiple times on this browser/OS, could you file an GH issue in client-sdk-js repo? Please include repro steps (or a snippet of code that could reproduce the issue). Thanks!
l
d
can you specify which app you are using to test? is this our example app?
l
yes
d
Please indicate that in the issue. Having no reproduction steps will make it unlikely for the engineers to know what to do with the ticket.
l
d
thanks! we will take a look
l
Was this reproducible ?
?
d
not able to reproduce the issue you'd reported, but we are seeing some other strange behaviors on MS Edge mobile.
👀 1
ok, I can reproduce this behavior.
will note findings in the ticket
l
Sure thank you
@polite-kilobyte-67570 Any update on issue #447 ?
@dry-elephant-14928 @polite-kilobyte-67570 guys ?
d
Hi Karthik, just to set expectations on timing. This is an open source community, and we try to help everyone to the best of our abilities. However, this isn't a commercial support channel where there are guarantees around resolution or when we will be able to get to it. If the issue is urgent, I would suggest trying to play with the code base and see if you can make progress on it. (one benefit of open source!)
we'd welcome the help and would be glad to accept PRs!
l
Got it 👍
Where can i find the docs for
expWebAudioMix
feature to know what it does actually
d
it's implemented in this PR
👍 1
l
Im not good at typescript and i've never worked on an open source project so i wouldn't be able to do a PR now. But i'll look forward to do it anyway in the future as it is an interesting project.
For time being i've added a crude fix in my wrapper app where i render some 50 audio tags on the start itself and attach tracks as and when a participant joins. By doing this no audio tags are created later on and browsers also don't crib about it
🙌 1
Thanks for all the help 🙌
d
ah ha, that's a great workaround. thank you for sharing!