Skip to content
Back to skills

Ffmpeg Kit Macos Codesign Crash

ASecurity

Fix Flutter macOS app crash at launch due to FFmpeg Kit library loading failure. Use when: (1) macOS app builds successfully but crashes immediately on launch, (2) Crash log shows "Library not loaded: libfontconfig.1.dylib" or similar homebrew library, (3) Error mentions "code signature not valid for use in process" with "different Team IDs", (4) Using ffmpeg_kit_flutter_new (Full GPL variant). The Full GPL variant has external dependencies on homebrew libraries that fail macOS code signing. ...

  • 265 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
developmentbashsecuritydocumentation

Works with

  • claude code

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add divinevideo/divine-mobile --skill ffmpeg-kit-macos-codesign-crash --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ffmpeg Kit Macos Codesign Crash?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ffmpeg Kit Macos Codesign Crash
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/divinevideo-ffmpeg-kit-macos-codesign-crash/badge)](https://www.skillsdirectory.com/skills/divinevideo-ffmpeg-kit-macos-codesign-crash)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ffmpeg-kit-macos-codesign-crash
description: |
  Fix Flutter macOS app crash at launch due to FFmpeg Kit library loading failure. Use when:
  (1) macOS app builds successfully but crashes immediately on launch, (2) Crash log shows
  "Library not loaded: libfontconfig.1.dylib" or similar homebrew library, (3) Error mentions
  "code signature not valid for use in process" with "different Team IDs", (4) Using
  ffmpeg_kit_flutter_new (Full GPL variant). The Full GPL variant has external dependencies
  on homebrew libraries that fail macOS code signing. Switch to ffmpeg_kit_flutter_new_min.
author: Claude Code
version: 1.0.0
date: 2025-01-25
---

# FFmpeg Kit macOS Code Signing Crash

## Problem

Flutter macOS app builds successfully but crashes immediately at launch with a library
loading failure. The crash is caused by FFmpeg Kit's Full GPL variant having runtime
dependencies on homebrew-installed libraries (like fontconfig) that fail macOS code
signature validation.

## Context / Trigger Conditions

- **Platform**: macOS only (iOS and Android are not affected)
- **Package**: Using `ffmpeg_kit_flutter_new` (Full GPL variant)
- **Symptom**: App builds successfully but crashes on launch
- **Crash log shows**:
  ```
  Library not loaded: /opt/homebrew/*/libfontconfig.1.dylib
  Referenced from: .../libswresample.framework/...
  Reason: code signature in (.../libfontconfig.1.dylib) not valid for use in process:
  mapping process and mapped file (non-platform) have different Team IDs
  ```

## Root Cause

The `ffmpeg_kit_flutter_new` package is the "Full GPL" variant which includes many
FFmpeg libraries for advanced features like text rendering (drawtext filter). These
libraries have external dependencies on system fonts via `libfontconfig`.

On macOS, when the app tries to load `libswresample.framework`, it attempts to also
load `libfontconfig.1.dylib` from homebrew. macOS code signing validation rejects
this because the homebrew library has a different Team ID than your app.

## Solution

Switch from `ffmpeg_kit_flutter_new` (Full GPL) to `ffmpeg_kit_flutter_new_min` (Minimal).

**Step 1: Update pubspec.yaml**
```yaml
# Before
ffmpeg_kit_flutter_new: ^3.2.0

# After
ffmpeg_kit_flutter_new_min: ^3.1.0
```

**Step 2: Update imports in all Dart files**
```dart
// Before
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
import 'package:ffmpeg_kit_flutter_new/ffprobe_kit.dart';
import 'package:ffmpeg_kit_flutter_new/return_code.dart';

// After
import 'package:ffmpeg_kit_flutter_new_min/ffmpeg_kit.dart';
import 'package:ffmpeg_kit_flutter_new_min/ffprobe_kit.dart';
import 'package:ffmpeg_kit_flutter_new_min/return_code.dart';
```

**Step 3: Clean and rebuild**
```bash
flutter clean
rm -f macos/Podfile.lock
flutter pub get
flutter run -d macos
```

## What Features Are Preserved

The minimal variant includes everything needed for typical video apps:
- h264/libx264 video encoding
- AAC audio encoding
- VideoToolbox hardware acceleration (Apple platforms)
- Standard filters: overlay, crop, scale, concat, amix
- FFprobe for media information

## What Features Are Removed

The minimal variant does NOT include:
- `drawtext` filter (font rendering) - use PNG overlays instead
- Advanced codec libraries with external dependencies
- Features requiring fontconfig, freetype, etc.

## Verification

After the fix:
1. `flutter run -d macos` should launch the app without crashing
2. Video encoding/decoding operations should work normally
3. iOS builds continue to work (they weren't affected)

## Example

**Find files needing import updates:**
```bash
grep -r "ffmpeg_kit_flutter_new" lib/ --include="*.dart" -l
```

**Update all imports (sed example):**
```bash
find lib -name "*.dart" -exec sed -i '' \
  's/ffmpeg_kit_flutter_new/ffmpeg_kit_flutter_new_min/g' {} \;
```

## Notes

- This issue only affects macOS; iOS and Android don't have the same code signing restrictions
- The error message is misleading - it mentions fontconfig but the fix is changing FFmpeg Kit variants
- If you actually need `drawtext` filter on macOS, you'd need to bundle fontconfig with proper signing (complex)
- Alternative: Use the official `ffmpeg_kit_flutter` from arthenica if you need more control over variants

## References

- [ffmpeg_kit_flutter_new on pub.dev](https://pub.dev/packages/ffmpeg_kit_flutter_new)
- [ffmpeg_kit_flutter_new_min on pub.dev](https://pub.dev/packages/ffmpeg_kit_flutter_new_min)
- [Apple Code Signing Documentation](https://developer.apple.com/documentation/security/code_signing_services)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…