The deb-multimedia.org repository provides multimedia packages for Debian that are either unavailable in the official archives or built with additional features. Common examples include FFmpeg compiled with extra codec support (x264, x265, AAC, and proprietary formats), enhanced builds of VLC, and various audio/video tools with non-free components enabled. This makes the repository useful for video editing, media transcoding, and playing content that requires codecs Debian cannot distribute for licensing reasons.
This guide walks through adding the deb-multimedia repository to your Debian system, installing packages from it, and removing it when no longer needed.
These instructions cover Debian 13 (Trixie), Debian 12 (Bookworm), and Debian 11 (Bullseye). If you use extrepo, it detects your Debian release and configures the matching repository suite automatically. If you use the manual method, this guide uses your system codename from
/etc/os-release. Debian 10 (Buster) and older releases have been moved to the deb-multimedia archive.
Choose Your Installation Method
You can add the deb-multimedia repository using two methods. The extrepo method handles GPG key management automatically and is simpler for most users. The manual method provides more control over the configuration and works in environments where extrepo is unavailable.
Adding deb-multimedia replaces several official Debian packages with modified versions. Due to higher version epochs, these packages take priority during upgrades and cannot be easily reverted using standard APT commands. If you later decide to remove the repository, you will need to manually downgrade affected packages back to official Debian versions. Consider whether the additional codec support justifies this trade-off for your use case.
| Method | GPG Key Management | Configuration Format | Best For |
|---|---|---|---|
| extrepo (Recommended) | Automatic | DEB822 .sources | Most users; simple setup with automatic key handling |
| Manual Repository | Manual download | DEB822 .sources | Scripted deployments, custom configurations, or systems without extrepo |
We recommend the extrepo method for most users because it downloads and verifies the signing key automatically, reducing the chance of configuration errors. Use the manual method if you need explicit control over the APT source configuration or you are scripting the setup.
Method 1: Add Deb-Multimedia with extrepo (Recommended)
The extrepo tool is Debian’s official utility for managing external repositories. It maintains a curated list of third-party sources and handles GPG key downloads automatically.
Install extrepo
Update your package index and install extrepo:
sudo apt update
sudo apt install extrepo
Enable Non-Free Policy (Required)
By default, extrepo only enables repositories with free software. The deb-multimedia repository includes a non-free component containing packages with proprietary codecs or restrictive licenses. Enable the non-free policy to access these packages:
sudo sed -i 's/# - non-free/- non-free/' /etc/extrepo/config.yaml
This command uncomments the non-free line in extrepo’s configuration, allowing it to enable repositories that contain non-free packages.
Enable the Deb-Multimedia Repository
Enable the repository with a single command:
sudo extrepo enable deb-multimedia
Extrepo creates a configuration file at /etc/apt/sources.list.d/extrepo_deb-multimedia.sources and downloads the GPG signing key to /var/lib/extrepo/keys/.
Update Package Index
Refresh your package lists to include packages from the new repository:
sudo apt update
Example output (truncated) showing the repository was added successfully:
Get:4 https://www.deb-multimedia.org trixie InRelease [18.6 kB] Get:5 https://www.deb-multimedia.org trixie/main amd64 Packages [137 kB] Get:6 https://www.deb-multimedia.org trixie/non-free amd64 Packages [1504 B]
The suite name in your output (trixie, bookworm, or bullseye) reflects your Debian version. Extrepo automatically detects and configures the correct suite.
Method 2: Add Deb-Multimedia Manually
The manual method gives you direct control over the repository configuration. Use this approach for scripted deployments, air-gapped systems, or when you prefer explicit configuration.
Install Prerequisites
Install the tools needed for secure repository configuration:
sudo apt update
sudo apt install ca-certificates curl
These packages provide HTTPS support (ca-certificates) and file downloading (curl).
Install the Deb-Multimedia Keyring Package
Deb-multimedia publishes an APT keyring package. Installing it places the repository signing key under /usr/share/keyrings/, which is the preferred approach for modern APT setups.
Download the keyring package:
cd /tmp
curl -fsSLO https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb
Verify the download integrity before installing. This confirms the package was not corrupted or tampered with during transfer:
sha256sum deb-multimedia-keyring_2024.9.1_all.deb
Expected checksum output for version 2024.9.1:
8dc6cbb266c701cfe58bd1d2eb9fe2245a1d6341c7110cfbfe3a5a975dcf97ca deb-multimedia-keyring_2024.9.1_all.deb
If the checksum matches, install the keyring package:
sudo dpkg -i deb-multimedia-keyring_2024.9.1_all.deb
If the download URL changes (new keyring package version), check the deb-multimedia-keyring package directory for the latest
_all.debfilename. You will also need to verify the new checksum from a trusted source or compare against multiple downloads.
Add the Repository Configuration
Create a DEB822-format sources file that points to the repository:
CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
ARCH=$(dpkg --print-architecture)
cat <<EOF | sudo tee /etc/apt/sources.list.d/deb-multimedia.sources
Types: deb
URIs: https://www.deb-multimedia.org
Suites: ${CODENAME}
Components: main non-free
Architectures: ${ARCH}
Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp
EOF
The configuration uses your system’s codename (trixie, bookworm, or bullseye) and architecture automatically. If $CODENAME is empty, check /etc/os-release and confirm that VERSION_CODENAME is set. You can verify the created file:
cat /etc/apt/sources.list.d/deb-multimedia.sources
Expected output (your codename and architecture will reflect your system):
Types: deb URIs: https://www.deb-multimedia.org Suites: [codename] Components: main non-free Architectures: [arch] Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp
The Suites line will show your actual codename (trixie, bookworm, or bullseye) and Architectures will typically show amd64 on 64-bit systems or arm64 on ARM systems.
Update Package Index
Refresh your package lists:
sudo apt update
You should see output indicating packages are being fetched from deb-multimedia.org:
Get:4 https://www.deb-multimedia.org trixie InRelease [18.6 kB] Get:5 https://www.deb-multimedia.org trixie/main amd64 Packages [137 kB] Get:6 https://www.deb-multimedia.org trixie/non-free amd64 Packages [1504 B]
Verify the Repository
Confirm the repository is active by checking a package that deb-multimedia provides. FFmpeg is a good test because deb-multimedia builds it with additional codec support:
apt-cache policy ffmpeg
Example output showing both the official Debian version and the deb-multimedia version:
ffmpeg:
Installed: (none)
Candidate: 10:x.x.x-dmo1+debXXu1
Version table:
10:x.x.x-dmo1+debXXu1 500
500 https://www.deb-multimedia.org [codename]/main amd64 Packages
7:x.x.x-0+debXXu1 500
500 http://deb.debian.org/debian [codename]/main amd64 Packages
Your output will show actual version numbers and your Debian codename (trixie, bookworm, or bullseye). The key indicator is the epoch number before the colon: deb-multimedia packages use epoch 10, while official Debian packages use epoch 7. Because APT considers higher epochs as “newer,”
apt install ffmpegwill automatically select the deb-multimedia version.
Install Packages from Deb-Multimedia
Search for Available Packages
Use apt-cache madison to see which version of a package comes from deb-multimedia:
apt-cache madison vlc
Example output showing packages from multiple sources:
vlc | 1:x.x.x-dmo0+debXXu1 | https://www.deb-multimedia.org [codename]/main amd64 Packages
vlc | x.x.x-0+debXXu1 | http://deb.debian.org/debian-security [codename]-security/main amd64 Packages
vlc | x.x.x-0+debXXu1 | http://deb.debian.org/debian [codename]/main amd64 Packages
The deb-multimedia version appears with the -dmo suffix in the version string. The epoch (1: before the version number) gives deb-multimedia priority, even when the base version numbers are identical. Your actual output will show your Debian codename and current version numbers.
Install a Package
Install packages using standard APT commands. Because deb-multimedia packages typically have higher version epochs, APT automatically selects them:
sudo apt install vlc
To explicitly install a specific version (for example, the official Debian version instead of deb-multimedia), use the release codename syntax:
sudo apt install vlc/trixie
Replace trixie with your Debian codename (bookworm for Debian 12, bullseye for Debian 11). This syntax tells APT to install the version from official Debian repositories regardless of epoch.
Popular Deb-Multimedia Packages
Common packages that are often replaced by deb-multimedia builds (check the version string for -dmo):
- ffmpeg – Video/audio converter with additional codec support. See Install FFmpeg on Debian for detailed configuration options.
- vlc – Media player with extended format support
- handbrake – Video transcoder with hardware encoding support
- kodi – Media center application
- mpv – Lightweight, scriptable media player
- FFmpeg libraries (libavcodec, libavformat, libavutil, libswscale, libswresample) – Shared libraries used by many multimedia applications; these are typically upgraded automatically when you install FFmpeg from deb-multimedia
For a complete package list, visit the deb-multimedia distribution index and browse your Debian release.
Troubleshooting
APT says the deb-multimedia key is missing or the Release file is not signed
This usually means the keyring package is not installed or the Signed-By path in your .sources file does not match the installed keyring. Run these commands to diagnose the issue:
dpkg -l | grep -E '^ii\s+deb-multimedia-keyring\s'
ls -l /usr/share/keyrings/ | grep -i deb-multimedia
cat /etc/apt/sources.list.d/deb-multimedia.sources
The first command confirms whether the keyring package is installed. The second shows the actual keyring filename in the keyrings directory. The third displays your repository configuration. If the Signed-By path does not match the actual keyring location, edit the .sources file to correct it.
extrepo does not recognize deb-multimedia
If extrepo enable deb-multimedia fails with “repository not found” or similar, your extrepo offline data may be outdated. Update the extrepo package and its data:
sudo apt update
sudo apt install --only-upgrade extrepo extrepo-offline-data
If the repository is still not available after updating, use the manual method instead. The extrepo database depends on Debian’s curated list of external repositories, which occasionally lags behind repository availability.
Hash sum mismatch or connection errors during apt update
Transient network issues or mirror synchronization delays can cause hash mismatches. Wait a few minutes and retry:
sudo apt update
If errors persist, the deb-multimedia server may be temporarily unavailable. The repository is maintained by a single individual, so occasional downtime can occur. Check back later or verify connectivity to deb-multimedia.org directly.
APT refuses to downgrade packages after removal
If you see E: Packages were downgraded and -y was used without --allow-downgrades., re-run the install using --allow-downgrades or remove -y so you can confirm the prompt interactively.
Remove Deb-Multimedia Repository
If you no longer need the repository, remove it using the method that matches how you added it.
Remove extrepo-Managed Repository
Disable the repository (keeps configuration but marks it inactive):
sudo extrepo disable deb-multimedia
For complete removal, delete the configuration file:
sudo rm -f /etc/apt/sources.list.d/extrepo_deb-multimedia.sources
sudo apt update
Remove Manually-Added Repository
Delete the repository configuration and remove the deb-multimedia keyring package:
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.sources
sudo apt remove deb-multimedia-keyring
sudo apt update
Verify Removal
Confirm the repository is no longer active:
apt-cache policy ffmpeg
Example output showing only official Debian sources after removal:
ffmpeg:
Installed: (none)
Candidate: 7:x.x.x-0+debXXu1
Version table:
7:x.x.x-0+debXXu1 500
500 http://deb.debian.org/debian [codename]/main amd64 Packages
The absence of any deb-multimedia.org entries confirms the repository has been removed. The 7: epoch indicates the official Debian package.
Restore Official Debian Packages
Removing the repository does not automatically downgrade installed packages. Deb-multimedia packages use higher version epochs, so APT considers them “newer” even after the repository is removed. To restore official Debian versions, you must explicitly downgrade each affected package.
First, identify packages installed from deb-multimedia by searching for the -dmo version suffix:
dpkg -l | grep -i dmo
Example output showing deb-multimedia packages (version numbers will vary):
ii ffmpeg 10:x.x.x-dmo1+debXXu1 amd64 Tools for transcoding, streaming and playing ii libavcodecXX 10:x.x.x-dmo1+debXXu1 amd64 FFmpeg library with de/encoders
The -dmo suffix and 10: epoch identify packages from deb-multimedia. The library version number (58, 59, 60, or 61 for libavcodec) depends on your Debian version.
To downgrade a package to the official Debian version, use the release codename syntax:
sudo apt install --allow-downgrades ffmpeg/trixie
Replace trixie with your Debian release codename (bookworm for Debian 12, bullseye for Debian 11). This forces APT to install the version from official Debian repositories regardless of epoch. The --allow-downgrades flag is required if you also use -y or if you want a single command that works reliably in scripted environments.
For a complete restoration of all multimedia packages, downgrade ffmpeg and its libraries together. The library package names differ between Debian versions because FFmpeg’s shared library version changes with major releases:
Debian 13 (Trixie):
sudo apt install --allow-downgrades ffmpeg/trixie libavcodec61/trixie libavformat61/trixie libavutil59/trixie libswscale8/trixie
Debian 12 (Bookworm):
sudo apt install --allow-downgrades ffmpeg/bookworm libavcodec59/bookworm libavformat59/bookworm libavutil57/bookworm libswscale6/bookworm
Debian 11 (Bullseye):
sudo apt install --allow-downgrades ffmpeg/bullseye libavcodec58/bullseye libavformat58/bullseye libavutil56/bullseye libswscale5/bullseye
Downgrading packages may require removing software that depends on deb-multimedia-specific features. Review APT’s proposed changes carefully before confirming. If a downgrade causes dependency conflicts, you may need to remove and reinstall the affected applications.
Background and Considerations
Repository History
The repository was originally hosted at debian-multimedia.org until 2012. Following discussions between the Debian Project Leader and the repository maintainer about domain naming and package duplication concerns, the repository moved to deb-multimedia.org. The name change resolved confusion about whether the repository was an official Debian project. Christian Marillat continues to maintain the repository and has provided multimedia packages for Debian since 2000.
Package Differences from Official Debian
Deb-multimedia packages differ from official Debian packages in several ways:
- Additional codecs – FFmpeg and related tools include proprietary codec support (libfdk-aac, certain x264/x265 configurations) that Debian cannot distribute due to licensing or patent concerns
- Compile-time options – Some packages enable features that official Debian builds disable for policy or compatibility reasons. For example, FFmpeg from deb-multimedia may include encoders that require non-free libraries
- Version epochs – Deb-multimedia uses higher epoch numbers (the number before the first colon in version strings, such as
10:vs7:) to ensure their packages take priority over official Debian versions duringapt upgrade
Mixing Repositories
Adding third-party repositories introduces packages that may have different dependencies than official Debian packages. While deb-multimedia is well-maintained and designed to work alongside official Debian, be aware that:
- Some deb-multimedia packages replace official Debian packages with modified versions
- Dependency conflicts are rare but possible during major Debian upgrades
- Bug reports for deb-multimedia packages should go to the deb-multimedia maintainer, not Debian’s bug tracker
Further Reading
- Install FFmpeg on Debian – Detailed FFmpeg installation including codec configuration
- Enable contrib and non-free repositories on Debian – Access additional packages from official Debian archives
- Install backports and experimental repositories on Debian – Get newer package versions from official Debian sources
Conclusion
The deb-multimedia repository extends Debian’s multimedia capabilities with packages built with additional codec support and features. Using extrepo simplifies the setup process with automatic GPG key management, while the manual method provides explicit control for scripted deployments or environments where extrepo is unavailable. Both methods use the modern DEB822 configuration format and work across Debian 11, 12, and 13. If you decide later that you prefer official Debian packages, the removal and downgrade steps documented above allow you to revert to stock Debian versions.