Publish a converter-oriented package variant (min-gpl + lame/opus/vorbis/vpx/webp/dav1d)
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- android, c, flutter
- Domain
- backend, build-system, mobile
Research direction
Start by reading the package-variant build configuration and the existing min-gpl, audio, and video variant definitions; the issue does not name their file paths. Check how variants enable FFmpeg libraries and publish Android AARs, then assess whether a new converter-oriented variant can be built and measured against the proposed codec list. Done means the new variant is published with the requested encoders and decoders, with package size verified.
Written by the indexing model from the issue text.
Description
Summary
Media converters are stuck on full-gpl because it is the only package that has
both the GPL video encoders and the common audio/image encoders. That is a big
jump: full-gpl costs 20.4 MB of compressed arm64 payload where min-gpl
costs 9.2 MB, and a converter typically uses six of the ~34 extra libraries it
pays for.
Would you consider publishing one more variant — min-gpl plus
lame, opus, libvorbis, libvpx, libwebp, dav1d?
Why none of the existing eight works
| need | provided by | in min-gpl? |
in audio? |
in video? |
|---|---|---|---|---|
| H.264 / H.265 encode | x264, x265 | ✅ | ❌ | ❌ |
| MP3 encode | lame (no native encoder exists) | ❌ | ✅ | ❌ |
| Opus / Vorbis encode | opus, libvorbis | ❌ | ✅ | ❌ |
| VP9 encode (WebM) | libvpx | ❌ | ❌ | ✅ |
| WebP encode | libwebp | ❌ | ❌ | ✅ |
| AV1 / AVIF decode | dav1d | ❌ | ❌ | ✅ |
The requirement spans all three, so full-gpl is the only option, and it also
brings an OCR engine, an AV1 encoder, the libass subtitle-rendering stack, TLS
and SRT.
Measurements
Sizes of the published AARs (whole artifact, all four ABIs):
| variant | version | AAR |
|---|---|---|
| min | 2.2.2 | 37.1 MB |
| min-gpl | 2.2.2 | 46.4 MB |
| audio | 2.2.2 | 48.9 MB |
| video | 2.2.1 | 57.6 MB |
| full | 2.2.1 | 66.6 MB |
| full-gpl | 2.2.1 | 103.8 MB |
Like-for-like on arm64 — the same set of .so (libav*, libsw*,
libffmpegkit, libc++_shared), deflate-compressed to approximate what Play
actually delivers:
| on disk | compressed | |
|---|---|---|
full-gpl |
41.7 MB | 20.4 MB |
min-gpl |
19.1 MB | 9.2 MB |
So the GPL video encoders are the cheap part; the remaining libraries more than
double the payload. Adding the six above to min-gpl should land around
12–14 MB compressed, roughly 8 MB off a Play download for anything that
converts media.
min-gpl's configuration, read from its own libavutil.so, for reference:
--enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-mediacodec --enable-zlib.
Suggested configuration
--enable-gpl
--enable-x264 --enable-x265 --enable-libvpx
--enable-lame --enable-opus --enable-libvorbis --enable-libwebp
--enable-dav1d
--enable-android-media-codec --enable-android-zlib
Optionally --enable-libsoxr (better resampling) and --enable-iconv
(subtitle charset conversion); both are small.
A name like ffmpeg-kit-media or ffmpeg-kit-converter-gpl would describe it.
Context
Measured against ffmpeg_kit_flutter_new 4.3.2 →
com.antonkarpenko:ffmpeg-kit-full-gpl:2.1.0, in an offline photo/video/audio
converter that targets MP4/MKV/WebM/MOV/AVI/GIF, JPEG/PNG/WebP/BMP/TIFF and
MP3/M4A/WAV/FLAC/OGG/Opus. Happy to test a snapshot against that matrix if it
is useful.
Thanks for keeping this alive after the upstream archive — it is the reason a
lot of Flutter media apps still work.
- Dominant language
- C
- Stars
- 182
- Forks
- 122
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sk3llo/ffmpeg_kit_flutter
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
sk3llo/ffmpeg_kit_flutter#176 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 58/100
sk3llo/ffmpeg_kit_flutter#175 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 42/100
sk3llo/ffmpeg_kit_flutter#174 ·
-
help wanted
Difficulty 5/5 Over a week Newbie friendliness 25/100
sk3llo/ffmpeg_kit_flutter#161 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
sk3llo/ffmpeg_kit_flutter#152 · 5 comments ·
All issues in sk3llo/ffmpeg_kit_flutter
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Synth suite fails unless run from the repo root: signal_flow's default machine path is cwd-relativeOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
Nimblesite/osprey#370 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day