14.12.0 14.11.0 14.10.0 14.9.0 14.8.0 14.7 14.6 14.5 14.4 14.3
14.12.0 14.11.0 14.10.0 14.9.0 14.8.0 14.7 14.6 14.5 14.4 14.3

Recording Compression — Operator Guide

Applicable from VRS 14.12.0. Compression for mixed call recordings is configured in docker/config.env.

Background

Previously, mixed call recordings used a fixed compression of 4000 Hz and 16-bit. That gave about 50% size reduction compared with an uncompressed mix, but it was not configurable. Changing the level required a code change.

Compression is now controlled from docker/config.env. You can keep the original ~50% behavior, use a stronger PCM option (~75%), or use GSM (~90%). Only new recordings after a mixer restart use the new settings. Older files stay in whatever format they were mixed with.

Important rules

  • Set options in docker/config.env.

  • After editing, recreate/restart the mixer so the new values apply.

  • Only one profile is active at a time.

  • If OUTPUT_CODEC=gsm is set → GSM is used. If OUTPUT_CODEC=gsm is commented → PCM compression from COMPRESSION_* is used.

  • For PCM profiles (~50% / ~75%), OUTPUT_CODEC=gsm must be commented.

  • For GSM (~90%), COMPRESSION_SAMPLE_RATE and COMPRESSION_BIT_DEPTH do not affect the mix (they are ignored).

Profile 1 — about 50% compression (previous default)

Use this when you want the same behavior as before, but configured in env.

COMPRESSION_ENABLED=true
COMPRESSION_SAMPLE_RATE=4000
COMPRESSION_BIT_DEPTH=16
#OUTPUT_CODEC=gsm

Setting

What to do

COMPRESSION_ENABLED

Set to true

COMPRESSION_SAMPLE_RATE

Set to 4000

COMPRESSION_BIT_DEPTH

Set to 16

OUTPUT_CODEC=gsm

Comment out (#OUTPUT_CODEC=gsm)

Profile 2 — about 75% compression (stronger PCM)

Use this when you need more compression, but still want PCM (not GSM).

COMPRESSION_ENABLED=true
COMPRESSION_SAMPLE_RATE=4000
COMPRESSION_BIT_DEPTH=8
#OUTPUT_CODEC=gsm

Setting

What to do

COMPRESSION_ENABLED

Set to true

COMPRESSION_SAMPLE_RATE

Set to 4000

COMPRESSION_BIT_DEPTH

Set to 8

OUTPUT_CODEC=gsm

Comment out (#OUTPUT_CODEC=gsm)

Profile 3 — about 90% compression (GSM)

Use this for the strongest size reduction (telephony-style GSM storage).

OUTPUT_CODEC=gsm
COMPRESSION_ENABLED=false

Setting

What to do

OUTPUT_CODEC=gsm

Uncomment / set (required)

COMPRESSION_ENABLED

Recommended false (see note below)

COMPRESSION_SAMPLE_RATE

No effect — may leave as-is

COMPRESSION_BIT_DEPTH

No effect — may leave as-is

Is COMPRESSION_ENABLED=false required for Profile 3?

No — not required for GSM to work.

When OUTPUT_CODEC=gsm is set, the mixer uses the GSM path and ignores compression rate/bit-depth settings.

Setting COMPRESSION_ENABLED=false is still recommended so the config is clear: it shows that PCM compression is not the active mode, and avoids confusion if someone later comments out OUTPUT_CODEC=gsm and accidentally leaves compression enabled.

Quick reference

Goal

Active settings

Comment OUTPUT_CODEC=gsm?

Do COMPRESSION_* matter?

Approx. savings

~50%

4000 Hz / 16-bit, compression on

Yes

Yes

~50%

~75%

4000 Hz / 8-bit, compression on

Yes

Yes

~75%

~90%

OUTPUT_CODEC=gsm

No (keep enabled)

No (ignored)

~90%

Apply a profile (checklist)

  1. Edit docker/config.env using one profile above.

  2. Confirm GSM is commented for ~50% / ~75%, or enabled for ~90%.

  3. Recreate/restart the mixer.

  4. Verify env inside the container (optional): docker exec mixer printenv | grep -E 'OUTPUT_CODEC|COMPRESSION'

  5. Make a new test call and confirm size/quality.

  6. Confirm UI play still works; for GSM, confirm download size stays small.