Skip to content

Add automatic photo and video compression before upload #6422

Description

@RoboPolaris

Feature request

Nextcloud Talk should offer automatic client-side compression of photos and videos before they are uploaded, similar to the standard media-sharing experience in WhatsApp and Telegram.

At the moment, media files are often uploaded in their original size. A short smartphone video can therefore consume several hundred megabytes of mobile data and server storage. This makes Talk impractical as a day-to-day messenger, especially for families, groups of friends and users of self-hosted instances with limited storage or slower connections.

A major use case for Nextcloud Talk

There is a growing demand for a convenient messenger that allows people to share private photos, videos and personal conversations with family members and friends while keeping control over where this data is stored.

This is one of the strongest potential use cases for Nextcloud Talk. Users can communicate through their own Nextcloud instance instead of relying entirely on a centrally operated third-party messaging platform.

However, automatic media optimization is essential for this target group. Families and friends regularly exchange photos and short videos. Without client-side compression, everyday use can quickly result in excessive storage consumption, long upload times and unnecessary mobile-data usage.

For many users looking for a private and self-hosted alternative to mainstream messengers, the lack of automatic media compression is therefore not merely a missing convenience feature. It is a major barrier to adopting Nextcloud Talk as their primary messenger.

Adding this feature could make Talk attractive to a much larger group of private users who currently cannot use it comfortably for normal family and friendship communication.

Suggested behaviour

When selecting a photo or video, users should be offered two options:

  • Optimized quality – default option
  • Original quality / Send as file

For optimized quality, the Android app could:

  • resize photos to a configurable maximum resolution, for example 2,048 pixels;
  • encode photos as JPEG, WebP or AVIF at a reasonable quality;
  • transcode large videos to a widely supported format such as H.264/AAC MP4;
  • reduce videos to 720p or 1080p;
  • use Android MediaCodec hardware encoding where available;
  • use FFmpeg or another suitable media-processing library where appropriate;
  • fall back gracefully when a format cannot be transcoded;
  • preserve the correct orientation and aspect ratio;
  • show compression and upload progress;
  • allow the process to be cancelled;
  • perform all compression locally before encryption and upload.

Possible quality settings:

  • Data saver: 720p, reduced bitrate
  • Standard: 1080p, moderate bitrate
  • Original: no resizing or transcoding

The default settings should aim to produce files that are suitable for normal viewing on smartphones while significantly reducing their size.

Why this matters

This feature would:

  • substantially reduce upload times;
  • reduce mobile-data consumption;
  • reduce storage usage on self-hosted Nextcloud servers;
  • improve usability on slower connections;
  • make regular sharing of family photos and videos practical;
  • help Talk compete as a private, self-hosted everyday messenger;
  • make Nextcloud more attractive to users who want control over sensitive personal media;
  • remove one of the main barriers preventing private users from replacing mainstream messengers with Talk.

This request concerns actual client-side compression before upload. Server-generated previews or thumbnails do not solve the issue because the original media file has already been uploaded and has already consumed bandwidth and storage.

Metadata

Metadata

Assignees

Labels

1. to developAccepted and waiting to be taken care of (should be only set by nextcloud employees)enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions