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.
Summary
Media converters are stuck on
full-gplbecause it is the only package that hasboth the GPL video encoders and the common audio/image encoders. That is a big
jump:
full-gplcosts 20.4 MB of compressed arm64 payload wheremin-gplcosts 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-gplpluslame,opus,libvorbis,libvpx,libwebp,dav1d?Why none of the existing eight works
min-gpl?audio?video?The requirement spans all three, so
full-gplis the only option, and it alsobrings 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):
Like-for-like on arm64 — the same set of
.so(libav*,libsw*,libffmpegkit,libc++_shared),deflate-compressed to approximate what Playactually delivers:
full-gplmin-gplSo the GPL video encoders are the cheap part; the remaining libraries more than
double the payload. Adding the six above to
min-gplshould land around12–14 MB compressed, roughly 8 MB off a Play download for anything that
converts media.
min-gpl's configuration, read from its ownlibavutil.so, for reference:--enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-mediacodec --enable-zlib.Suggested configuration
Optionally
--enable-libsoxr(better resampling) and--enable-iconv(subtitle charset conversion); both are small.
A name like
ffmpeg-kit-mediaorffmpeg-kit-converter-gplwould describe it.Context
Measured against
ffmpeg_kit_flutter_new4.3.2 →com.antonkarpenko:ffmpeg-kit-full-gpl:2.1.0, in an offline photo/video/audioconverter 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.