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 support
  • mask - prevents Flatpak from trying to download the problematic openh264

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

MethodProsConsFor 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 isolationAdvanced users
Manual openh264 download✅ Minimal size❌ Unstable, requires re-download on updatesNot 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.