nextcloud / nextcloud/spreed

Massive increase in video quality in chrome by setting "x-google-max-bitrate" in SDP (breaks bandwidth cap of 300KBps)

Open
#6,739 5 comments 3 reactions 1 assignee View on GitHub

@danxuliu is already working on this.

Since Dec 28, 2021.

browser: Chrome/Chromium bug feature: WebRTC 🚡
Dominant language
PHP
Stars
2.2k
Forks
587
Avg merge
18h 27m
Merged PRs (30d)
333

Description

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. Start any video call
  2. Monitor network traffic
Expected behaviour

Should use full bandwidth

Actual behaviour

Chrome webRTC by default is limited to 300 KBps (at least on macOS - can Windows / Linux users confirm?).

Proof of concept

This bottleneck can be lifted by setting "x-google-max-bitrate" in SDP.
Credit goes to Cyh: https://stackoverflow.com/questions/57653899/how-to-increase-the-bitrate-of-webrtc
Implemented in a quick and dirty implementation here: https://github.com/wiegell/spreed/commit/5c94fe6feb554810f0e509fdaf3eff34cc7bd0b1
This increases a 1080p stream from 300 KBps to around 1 - 1.5 MBps and adds alot of details.

Further implementation

I have no clue how this could affect scenarios with more than a couple of participants.
Also i dont know if the iOS or Android apps have similar limitations.
I would expect to have this option at least as an opt-in in the settings.

Talk app

Talk app version: (see apps admin page: /index.php/settings/apps)
13.0.1

Custom Signaling server configured: yes/no and version (see additional admin settings: /index.php/index.php/settings/admin/talk#signaling_server)
No

Custom TURN server configured: yes/no (see additional admin settings: /index.php/settings/admin/talk#turn_server)
No

Custom STUN server configured: yes/no (see additional admin settings: /index.php/settings/admin/talk#stun_server)
No

Browser

Microphone available: yes

Camera available: yes

Operating system: macOS

Browser name: Chrome

Browser version: 96.0.4664.110

Server configuration

Operating system: Armbian

Web server: Nginx

Database: MariaDB

PHP version: 7.4

Nextcloud Version: Nextcloud Hub II (23.0.0)

List of activated apps:

Enabled:
  - accessibility: 1.9.0
  - activity: 2.15.0
  - bruteforcesettings: 2.3.0
  - circles: 23.0.0
  - cloud_federation_api: 1.6.0
  - comments: 1.13.0
  - dashboard: 7.3.0
  - dav: 1.21.0
  - federatedfilesharing: 1.13.0
  - files: 1.18.0
  - files_automatedtagging: 1.13.0
  - files_external: 1.15.0
  - files_rightclick: 1.2.0
  - files_sharing: 1.15.0
  - files_trashbin: 1.13.0
  - files_versions: 1.16.0
  - files_videoplayer: 1.12.0
  - groupfolders: 11.1.0
  - logreader: 2.8.0
  - lookup_server_connector: 1.11.0
  - music: 1.5.0
  - notifications: 2.11.1
  - oauth2: 1.11.0
  - photos: 1.5.0
  - previewgenerator: 3.4.1
  - provisioning_api: 1.13.0
  - settings: 1.5.0
  - spreed: 13.0.1
  - systemtags: 1.13.0
  - text: 3.4.0
  - theming: 1.14.0
  - twofactor_backupcodes: 1.12.0
  - user_status: 1.3.1
  - viewer: 1.7.0
  - weather_status: 1.3.0
  - workflow_script: 1.8.0
  - workflowengine: 2.5.0
Disabled:
  - admin_audit
  - contactsinteraction
  - encryption
  - federation
  - files_pdfviewer
  - firstrunwizard
  - flow_notifications
  - nextcloud_announcements
  - password_policy
  - privacy
  - recommendations
  - serverinfo
  - sharebymail
  - support
  - survey_client
  - updatenotification
  - user_ldap

Nextcloud configuration:

{
    "system": {
        "memcache.local": "\\OC\\Memcache\\APCu",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "overwritewebroot": "\/nextcloud",
        "overwrite.cli.url": "https:\/\/raddoc.duckdns.org\/nextcloud",
        "trusted_domains": [
            "raddoc.duckdns.org"
        ],
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "23.0.0.10",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "log_type": "file",
        "logfile": "\/var\/log\/nextcloud.log",
        "logfilemode": 416,
        "loglevel": "0",
        "logdateformat": "F d, Y H:i:s",
        "updater.secret": "***REMOVED SENSITIVE VALUE***",
        "maintenance": false,
        "music.lastfm_api_key": "c29a7c80783f9b8c478eecd3ef45436e",
        "mysql.utf8mb4": true
    }
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.