Skip to content
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

Video device ok in join call popup, but not available in call itself #7859

Open
jurgenhaas opened this issue Sep 5, 2022 · 11 comments
Open

Comments

@jurgenhaas
Copy link

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Starting a call, the popup shows the camera picture of the user
  2. Click "Start call" in that popup, the call itself only shows the avatar of myself and camera is not available
  3. The camera icon is disabled and hovering the mouse over it shows "no camera"
  4. To fix this, one has to open the hamburger menu and "Devices setting", select the camera "None" and then the real camera again
  5. Closing the settings, then the camera can be turned on in this call
  6. This is the same every time you start or join a call
  7. This happens on machines, where everything worked for months, and suddenly, it doesn't anymore

Expected behaviour

Camera should be available.

Actual behaviour

Camera is not available. Selecting "None" and then selecting actual camera again, solves the issue.

Talk app

Talk app version: 14.0.4

Custom Signaling server configured: no

Custom TURN server configured: yes

Custom STUN server configured: yes

Browser

Microphone available: yes

Camera available: yes in preparation, no in call

Operating system: Ubuntu 20

Browser name: Tested in latest Firefox, Chrome, Brave

Browser version: Latest stable releases

Browser log

Found nothing special in either the console nor the network log, but I have the files here if anyone wanted to look into them as well.

Server configuration

Operating system: Ubuntu 20.04

Web server: Apache

Database: MySQL

PHP version: 7.4

Nextcloud Version: 24.0.4

List of activated apps:

Enabled:
  - accessibility: 1.10.0
  - activity: 2.16.0
  - admin_audit: 1.14.0
  - announcementcenter: 6.3.1
  - apporder: 0.15.0
  - audioplayer: 3.3.0
  - bookmarks: 11.0.1
  - breezedark: 24.0.2
  - bruteforcesettings: 2.4.0
  - calendar: 3.5.0
  - circles: 24.0.1
  - cloud_federation_api: 1.7.0
  - comments: 1.14.0
  - contacts: 4.2.0
  - contactsinteraction: 1.5.0
  - dashboard: 7.4.0
  - dav: 1.22.0
  - deck: 1.7.1
  - drawio: 1.0.3
  - emlviewer: 1.0.2
  - external: 4.0.0
  - federatedfilesharing: 1.14.0
  - federation: 1.14.0
  - files: 1.19.0
  - files_automatedtagging: 1.14.0
  - files_downloadactivity: 1.13.0
  - files_fulltextsearch: 24.0.1
  - files_mindmap: 0.0.26
  - files_pdfviewer: 2.5.0
  - files_rightclick: 1.3.0
  - files_sharing: 1.16.2
  - files_trashbin: 1.14.0
  - files_versions: 1.17.0
  - files_videoplayer: 1.13.0
  - firstrunwizard: 2.13.0
  - fulltextsearch: 24.0.0
  - fulltextsearch_elasticsearch: 24.0.1
  - gpoddersync: 3.4.0
  - gpxpod: 5.0.0
  - group_everyone: 0.1.10
  - groupfolders: 12.0.1
  - guests: 2.2.0
  - health: 1.5.1
  - impersonate: 1.11.0
  - integration_whiteboard: 0.0.15
  - keeweb: 0.6.9
  - logreader: 2.9.0
  - lookup_server_connector: 1.12.0
  - mail: 1.14.0-beta2
  - metadata: 0.16.0
  - news: 18.2.0-beta1
  - nextcloud_announcements: 1.13.0
  - notes: 4.5.1
  - notifications: 2.12.0
  - notify_push: 0.4.0
  - oauth2: 1.12.0
  - password_policy: 1.14.0
  - phonetrack: 0.7.0
  - photos: 1.6.0
  - previewgenerator: 5.0.0
  - privacy: 1.8.0
  - provisioning_api: 1.14.0
  - ransomware_protection: 1.13.0
  - recommendations: 1.3.0
  - richdocuments: 6.2.0
  - serverinfo: 1.14.0
  - settings: 1.6.0
  - sharebymail: 1.14.0
  - sociallogin: 4.16.2
  - spreed: 14.0.4
  - support: 1.7.0
  - survey_client: 1.12.0
  - systemtags: 1.14.0
  - tasks: 0.14.4
  - text: 3.5.1
  - theming: 1.15.0
  - timetracker: 0.0.75
  - twofactor_backupcodes: 1.13.0
  - twofactor_totp: 6.4.0
  - updatenotification: 1.14.0
  - user_status: 1.4.0
  - viewer: 1.8.0
  - weather_status: 1.4.0
  - webapppassword: 22.5.0
  - workflow_script: 1.9.0
  - workflowengine: 2.6.0
Disabled:
  - encryption
  - files_external
  - registration: 1.5.0
  - user_ldap
  - user_saml: 5.0.2
@danxuliu
Copy link
Member

danxuliu commented Sep 7, 2022

Thanks for the details. Is the background blur enabled or disabled? Have you tried also as a guest in a private window? Is the issue reproducible as well in that case?

Besides that, in step 4 (To fix this, one has to open the hamburger menu and "Devices setting", select the camera "None" and then the real camera again), when you open the Devices settings, is the real camera initially selected? Or is it None from the beginning? If the real camera was initially selected, did the preview show the camera image, even if it was not visible in the call?

Finally, when did the issue start? Exactly with the update to Talk 14.0.4 or at a different point? Did something else change when the issue started (for example, the hardware camera)?

@danxuliu danxuliu added this to the 💔 Backlog milestone Sep 7, 2022
@jurgenhaas
Copy link
Author

blur?

That's disabled. I've just tried with blur being turned on, doesn't make any difference.

guest?

Just tried that. Yes, same effect.

step 4

When starting the call, the correct camera is selected and the video is visible. When going into "Device settings", the same thing: the real camera is selected and the video is visible too.

when did that start?

For me, it started last week Friday, September 2nd. For a colleague of mine, it started a couple of weeks before and he confirmed, that the workaround helps for him too.

@danxuliu
Copy link
Member

Thanks for the information. Based on all that it seems that the captured video track is stopped when joining the call, even if the camera device is still selected, which is quite strange. We have seen something like that happening with microphones when using a Bluetooth microphone (when the Bluetooth connection is lost the audio track is stopped), but it was not something reproducible just by starting a call. Nevertheless, which kind of camera are you using? Would it be possible to test with a different camera and see if the problem can be reproduced as well?

Although you mentioned that you did not find anything special in the browser console log, could you attach it nevertheless? Thanks.

@jurgenhaas
Copy link
Author

Hi @danxuliu my camera is a Logitech Connect device connected via USB. Unfortunately, I don't have a replacement that I could check. But here come the logs: logs.zip

Another observation though: when starting the call from the device check, where the live camera stream is working, thewn I see my avatar in the main call window, which very quickly flickers and then remains as the avatar. That feels as if the camera stream wnated to be initiated but something failed.

@nickvergessen
Copy link
Member

I have the same issue since ~2 weeks.
Also Ubuntu OS and Firefox as main browser

@Mailaender
Copy link

Log from Google Chrome:

index.js:46 No OC found
getLanguage @ index.js:46
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
t @ index.es.js:2337
jquery-migrate.min.js:2 JQMIGRATE: Migrate is installed, version 3.4.0
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
t @ index.es.js:2337
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
e @ index.es.js:2337
ConsoleLogger.js:37 [WARN] viewer: Some mimes were ignored because they are not enabled in the server previews config Object
log @ ConsoleLogger.js:37
ConsoleLogger.js:33 [INFO] viewer: No OCA.Files app found, viewer is now in standalone mode Object
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
e @ index.es.js:2337
capabilities.js:35 OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities
getCapabilities @ capabilities.js:35
capabilities.js:35 OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities
getCapabilities @ capabilities.js:35
capabilities.js:35 OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities
getCapabilities @ capabilities.js:35
viewer.js:43 Uncaught TypeError: Cannot read properties of undefined (reading 'fileActions')
    at viewer.js:62:13
    at viewer.js:43:26
    at viewer.js:43:26
globals.js:62 oc_appswebroots is deprecated: use OC.appswebroots instead, this will be removed in Nextcloud 20
Tt @ globals.js:62
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
e @ index.es.js:2337
globals.js:62 jQuery is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.
Tt @ globals.js:62
major.js:2 Proxying an event bus of version 2.1.1 with 1.3.0
e @ major.js:2
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
browserCheck.js:29 Detected browser Chrome 105 (105.0.0.0)
globals.js:62 jQuery is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.
Tt @ globals.js:62
globals.js:62 jQuery is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.
Tt @ globals.js:62
index.es.js:2337 Proxying an event bus of version 2.1.1 with 1.3.0
t @ index.es.js:2337
ConsoleLogger.js:33 [INFO] viewer: 6 viewer handlers registered Object
session-heartbeat.js:103 session heartbeat polling started
globals.js:62 $ is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.
Tt @ globals.js:62
globals.js:62 $ is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.
Tt @ globals.js:62
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
tflite-simd.js:9 [WASM] Loading model of size: 249792
tflite-simd.js:9 INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
printChar @ tflite-simd.js:9
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
CallButton.vue:258 Joining call
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
tflite-simd.js:9 [WASM] Loading model of size: 249792
tflite-simd.js:9 INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
printChar @ tflite-simd.js:9
webrtc.js:1505 localMediaStarted
VideoConstrainer.js:120 Failed to set quality 4 OverconstrainedError
(anonymous) @ VideoConstrainer.js:120
oakr7v7g:1 Uncaught (in promise) DOMException: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22
CallButton.vue:276 Leaving call
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
oakr7v7g:1 Uncaught (in promise) DOMException: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
CallButton.vue:258 Joining call
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
webrtc.js:1505 localMediaStarted
VideoConstrainer.js:120 Failed to set quality 4 OverconstrainedError
(anonymous) @ VideoConstrainer.js:120
oakr7v7g:1 Uncaught (in promise) DOMException: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22
CallButton.vue:276 Leaving call
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
qe @ vue.runtime.esm.js:1863
ln @ vue.runtime.esm.js:4235
insert @ vue.runtime.esm.js:3158
k @ vue.runtime.esm.js:6390
vi.nodeOps @ vue.runtime.esm.js:6609
e._update @ vue.runtime.esm.js:3963
a @ vue.runtime.esm.js:4081
_n.get @ vue.runtime.esm.js:4495
_n.run @ vue.runtime.esm.js:4570
vn @ vue.runtime.esm.js:4326
(anonymous) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (async)
Qe @ vue.runtime.esm.js:1942
rt @ vue.runtime.esm.js:1999
(anonymous) @ vue.runtime.esm.js:4418
_n.update @ vue.runtime.esm.js:4560
he.notify @ vue.runtime.esm.js:730
Be @ vue.runtime.esm.js:1125
setInCall @ participantsStore.js:194
(anonymous) @ vuex.esm.js:844
(anonymous) @ vuex.esm.js:466
(anonymous) @ vuex.esm.js:465
h._withCommit @ vuex.esm.js:624
h.commit @ vuex.esm.js:464
commit @ vuex.esm.js:409
(anonymous) @ participantsStore.js:419
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
Promise.then (async)
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
leaveCall @ participantsStore.js:401
(anonymous) @ vuex.esm.js:851
(anonymous) @ vuex.esm.js:515
h.dispatch @ vuex.esm.js:515
dispatch @ vuex.esm.js:406
(anonymous) @ CallButton.vue:287
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
yo @ MenuDown.vue?7f4a:19
o @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
leaveCall @ CallButton.vue:272
click @ CallButton.vue?vue&type=template&id=2aa14b81&scoped=true&:7
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2188
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2184
Sa.r._wrapper @ vue.runtime.esm.js:6961
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
qe @ vue.runtime.esm.js:1863
ln @ vue.runtime.esm.js:4235
insert @ vue.runtime.esm.js:3158
k @ vue.runtime.esm.js:6390
vi.nodeOps @ vue.runtime.esm.js:6609
e._update @ vue.runtime.esm.js:3963
a @ vue.runtime.esm.js:4081
_n.get @ vue.runtime.esm.js:4495
_n.run @ vue.runtime.esm.js:4570
vn @ vue.runtime.esm.js:4326
(anonymous) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (async)
Qe @ vue.runtime.esm.js:1942
rt @ vue.runtime.esm.js:1999
(anonymous) @ vue.runtime.esm.js:4418
_n.update @ vue.runtime.esm.js:4560
he.notify @ vue.runtime.esm.js:730
Be @ vue.runtime.esm.js:1125
setInCall @ participantsStore.js:194
(anonymous) @ vuex.esm.js:844
(anonymous) @ vuex.esm.js:466
(anonymous) @ vuex.esm.js:465
h._withCommit @ vuex.esm.js:624
h.commit @ vuex.esm.js:464
commit @ vuex.esm.js:409
(anonymous) @ participantsStore.js:419
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
Promise.then (async)
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
leaveCall @ participantsStore.js:401
(anonymous) @ vuex.esm.js:851
(anonymous) @ vuex.esm.js:515
h.dispatch @ vuex.esm.js:515
dispatch @ vuex.esm.js:406
(anonymous) @ CallButton.vue:287
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
yo @ MenuDown.vue?7f4a:19
o @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
leaveCall @ CallButton.vue:272
click @ CallButton.vue?vue&type=template&id=2aa14b81&scoped=true&:7
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2188
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2184
Sa.r._wrapper @ vue.runtime.esm.js:6961
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
qe @ vue.runtime.esm.js:1863
ln @ vue.runtime.esm.js:4235
insert @ vue.runtime.esm.js:3158
k @ vue.runtime.esm.js:6390
vi.nodeOps @ vue.runtime.esm.js:6609
e._update @ vue.runtime.esm.js:3963
a @ vue.runtime.esm.js:4081
_n.get @ vue.runtime.esm.js:4495
_n.run @ vue.runtime.esm.js:4570
vn @ vue.runtime.esm.js:4326
(anonymous) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (async)
Qe @ vue.runtime.esm.js:1942
rt @ vue.runtime.esm.js:1999
(anonymous) @ vue.runtime.esm.js:4418
_n.update @ vue.runtime.esm.js:4560
he.notify @ vue.runtime.esm.js:730
Be @ vue.runtime.esm.js:1125
setInCall @ participantsStore.js:194
(anonymous) @ vuex.esm.js:844
(anonymous) @ vuex.esm.js:466
(anonymous) @ vuex.esm.js:465
h._withCommit @ vuex.esm.js:624
h.commit @ vuex.esm.js:464
commit @ vuex.esm.js:409
(anonymous) @ participantsStore.js:419
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
Promise.then (async)
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
leaveCall @ participantsStore.js:401
(anonymous) @ vuex.esm.js:851
(anonymous) @ vuex.esm.js:515
h.dispatch @ vuex.esm.js:515
dispatch @ vuex.esm.js:406
(anonymous) @ CallButton.vue:287
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
yo @ MenuDown.vue?7f4a:19
o @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
leaveCall @ CallButton.vue:272
click @ CallButton.vue?vue&type=template&id=2aa14b81&scoped=true&:7
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2188
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2184
Sa.r._wrapper @ vue.runtime.esm.js:6961
Button.js:1 You need to fill either the text or the ariaLabel props in the button component.
mounted @ Button.js:1
qe @ vue.runtime.esm.js:1863
ln @ vue.runtime.esm.js:4235
insert @ vue.runtime.esm.js:3158
k @ vue.runtime.esm.js:6390
vi.nodeOps @ vue.runtime.esm.js:6609
e._update @ vue.runtime.esm.js:3963
a @ vue.runtime.esm.js:4081
_n.get @ vue.runtime.esm.js:4495
_n.run @ vue.runtime.esm.js:4570
vn @ vue.runtime.esm.js:4326
(anonymous) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (async)
Qe @ vue.runtime.esm.js:1942
rt @ vue.runtime.esm.js:1999
(anonymous) @ vue.runtime.esm.js:4418
_n.update @ vue.runtime.esm.js:4560
he.notify @ vue.runtime.esm.js:730
Be @ vue.runtime.esm.js:1125
setInCall @ participantsStore.js:194
(anonymous) @ vuex.esm.js:844
(anonymous) @ vuex.esm.js:466
(anonymous) @ vuex.esm.js:465
h._withCommit @ vuex.esm.js:624
h.commit @ vuex.esm.js:464
commit @ vuex.esm.js:409
(anonymous) @ participantsStore.js:419
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
Promise.then (async)
xe @ newGroupConversationStore.js:118
o @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
(anonymous) @ newGroupConversationStore.js:118
leaveCall @ participantsStore.js:401
(anonymous) @ vuex.esm.js:851
(anonymous) @ vuex.esm.js:515
h.dispatch @ vuex.esm.js:515
dispatch @ vuex.esm.js:406
(anonymous) @ CallButton.vue:287
c @ runtime.js:63
(anonymous) @ runtime.js:294
(anonymous) @ runtime.js:119
yo @ MenuDown.vue?7f4a:19
o @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
(anonymous) @ MenuDown.vue?7f4a:19
leaveCall @ CallButton.vue:272
click @ CallButton.vue?vue&type=template&id=2aa14b81&scoped=true&:7
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2188
qe @ vue.runtime.esm.js:1863
n @ vue.runtime.esm.js:2184
Sa.r._wrapper @ vue.runtime.esm.js:6961
oakr7v7g:1 Uncaught (in promise) DOMException: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22

This might be a related error:

Uncaught (in promise) DOMException: The play() request was interrupted because the media was removed from the document. https://goo.gl/LdLk22

@danxuliu
Copy link
Member

Thanks for the logs. The problem seems to be that Chromium fails to change the resolution, but instead of restoring the previous resolution it ends stopping the track (Failed to set quality 4 OverconstrainedError {name: 'OverconstrainedError', message: 'Source failed to restart', constraint: null}). This is a bug introduced in Chromium 104 and, in theory, fixed in Chromium 106.

The play() request was interrupted because the media was removed from the document is probably a side effect of that; as the track is now ended it is not possible to play it.

However, that does not explain why it would happen in Firefox too. @nickvergessen tried again and he could not reproduce in Firefox. @jurgenhaas Does it happen in Firefox for you? I ask because the original report says Browser name: Tested in latest Firefox, Chrome, Brave. Thanks!

@jurgenhaas
Copy link
Author

That's great news, thanks for your investigation.

I can confirm, that Firefox is just working fine. I'm sure I treid Firefox back when reporting this and it had failed there as well. But now I'm a bit uncertain. TBH, I'm using Firefox as my primary browser, but for all things WebRTC I'm always switching to Chrome, Brave or other Chromium based browser, because they work much better and screen sharing comes with more feature for multi-monitor environments.

Checking my Chromium browsers, they are all on 105 at the moment, so we have to wait for them to update and all should be fine. That's a great start into my day, thank you!!!

@ToS0
Copy link

ToS0 commented Sep 14, 2022

Yes, same here, Firefox did not work a week ago, but now it does. Maybe a update on Firefox, or the update of NC from 24.0.4 to 24.0.5 fixed the problem.

@drpetersen
Copy link

In the meantime, a workaround that works for me is doing the following:

  • join the call,
  • choose Device Settings from the menu,
  • select "none" as the video device,
  • select your actual video camera device again,
  • close the Device Settings dialog,
  • then you can enable the camera.

@ToS0
Copy link

ToS0 commented Sep 16, 2022

Indeed, nice trick 👍 Thx!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants