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. ...
Scanned 5/27/2026
Install via CLI
openskills install divinevideo/divine-mobile---
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)
No comments yet. Be the first to comment!