Publish a converter-oriented package variant (min-gpl + lame/opus/vorbis/vpx/webp/dav1d)

Open
#166 0 comments 1 reaction 0 assignees View on GitHub

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

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sk3llo/ffmpeg_kit_flutter

All issues in sk3llo/ffmpeg_kit_flutter

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.