nextcloud / spreed

🗨️ Nextcloud Talk – chat, video & audio calls for Nextcloud
https://nextcloud.com/talk
GNU Affero General Public License v3.0
1.6k stars 428 forks source link

Aspect-ratio for video-tracks is not considered #8815

Open Antreesy opened 1 year ago

Antreesy commented 1 year ago

How to use GitHub


Steps to reproduce

  1. Join a call with an enabled camera. Device checker shows a video stream 'as-is', without any constraints (16:9 on example) 2

  2. Video is cropped, because function _getConstraintsForQuality in VideoConstrainer.js fits only for 4:3 videos. image

  3. Switch to the grid view and back to the speaker view / Leave and rejoin / Disable and enable video device reinitialize video stream, and it is going without constraints: image

Originally posted by @ShGKme in https://github.com/nextcloud/spreed/issues/8772#issuecomment-1437625786

Expected behaviour

Video should not be cropped (see step 3)

Actual behaviour

16:9 video is cropped by 4:3 constrain rules (see step 2)

Talk app

Talk app version: 16.0.0 and below

danxuliu commented 1 year ago

16:9 video is cropped by 4:3 constrain rules (see step 2)

This is actually the expected behaviour. Even if the camera supports a higher resolution in calls the resolution is requested to be 720x540 (the actual resolution can be a different one, depending on the browser, camera, operating system... although it should be something similar to that). This is a default value chosen for performance reasons, both for CPU load when encoding the video and for network bandwidth when sending it.

Showing the video in one resolution and sending it in another one is not a solution either; on one hand if I recall correctly there were issues depending on the browser when applying different constraints to a video track from the same source, and on the other hand the user should see what is being sent to others (even if the receiver client could crop part of the image, but at least as a sender you should see what you are sending). Additionally applying the blur background to two different videos would be too taxing.

Having said all that, Switch to the grid view and back to the speaker view / Leave and rejoin / Disable and enable video device should not cause the constraints to be lost, they should be applied again automatically, so something is not working as expected either in the SentVideoQualityThrottler, the VideoConstrainer or the media pipeline.