When running apps via Flatpak (Discord, OBS, Firefox, etc.), you may see:
Warning: While downloading
http://ciscobinary.openh264.org/libopenh264-2.5.1-linux64.7.so.bz2:
Server returned status 403
Or in logs:
Failed to load OpenH264 library: openh264 cannot be opened
Symptoms:
- ❌ Video calls show black screen or don’t work
- ❌ OBS screen recording fails with encoding error
- ❌ Webcam doesn’t transmit video in browser
Cause: Cisco’s server (ciscobinary.openh264.org) blocks automated downloads of libopenh264 due to licensing/policy reasons. Status 403 = “forbidden”.
✅ Solution: Replace OpenH264 with ffmpeg-full
Instead of the problematic codec, install the full-featured ffmpeg-full from Flathub. It includes all necessary codecs including H.264 and doesn’t rely on external downloads.
Step 1: Install ffmpeg-full
flatpak install org.freedesktop.Platform.ffmpeg-full
When prompted for version, select the latest (usually 24.08 or higher):
Which do you want to use (0 to abort)? [0-6]: 3
Step 2: Block OpenH264 download
flatpak mask org.freedesktop.Platform.openh264
What this does:
install- adds full-featured FFmpeg with H.264 supportmask- prevents Flatpak from trying to download the problematicopenh264
Step 3: Restart the application
# For user apps
flatpak kill org.discordapp.Discord # replace with your app-id
flatpak run org.discordapp.Discord
# Or just reboot
🔍 Verify the fix
# Check that ffmpeg-full is installed
flatpak list | grep ffmpeg-full
# Ensure openh264 is masked
flatpak mask --list | grep openh264
# Check app logs (optional)
flatpak run --command=sh org.discordapp.Discord -c "journalctl --user -n 50"
If warnings about 403 or openh264 are gone - the fix worked.
⚙️ Advanced: User-space installation (no sudo)
If you use Flatpak in user mode (--user), commands differ slightly:
# Install in user-space
flatpak install --user org.freedesktop.Platform.ffmpeg-full
# Mask in user-space
flatpak mask --user org.freedesktop.Platform.openh264
Verify:
flatpak list --user | grep ffmpeg-full
flatpak mask --user --list | grep openh264
🔄 If it didn’t help: additional steps
1. Update repository metadata
flatpak update --appstream
flatpak update
2. Rebuild runtime cache
# Clear cache (safe, files will reinstall if needed)
flatpak repair
3. Check which app uses the codec
# Find app-id
flatpak list | grep -i discord
# Run with debug
flatpak run --command=sh org.discordapp.Discord -c "env | grep -i h264"
4. Alternative: Use system FFmpeg
If Flatpak version doesn’t work, you can allow the app to access system libraries:
# Allow access to /usr/lib (use with caution)
flatpak override --user --filesystem=/usr/lib org.discordapp.Discord
⚠️ This reduces container isolation - use only if you’re sure.
📊 Solution Comparison
| Method | Pros | Cons | For Whom |
|---|---|---|---|
| ffmpeg-full + mask | ✅ Works immediately, no sudo, updates via Flatpak | ❌ Increases install size (~100 MB) | Most users |
| System FFmpeg | ✅ Uses already-installed libraries | ❌ Requires permission setup, reduces isolation | Advanced users |
| Manual openh264 download | ✅ Minimal size | ❌ Unstable, requires re-download on updates | Not recommended |
⚠️ FAQ
# "Will this break other apps?"
→ No. Masking applies only to `openh264`, and `ffmpeg-full` is backward compatible.
# "Why not fix Cisco's server?"
→ It's a licensing policy. We can't change it, but we can work around it.
# "What if I really want openh264?"
→ Try downloading the library manually to `~/.var/app/*/cache/openh264/`, but it's unstable.
# "Will ffmpeg-full update automatically?"
→ Yes, via `flatpak update`. Masking persists.