Skip to content

Review: Android & Flutter packages

Thibault Deckers edited this page Jun 22, 2023 · 2 revisions

Video

befovy/fijkplayer

As of v0.8.7, backed by befovy/ijkplayer & befovy/FFmpeg ff4.0--ijk0.8.25--20200627--926:

  • ✔️ support content URIs
  • ✔️ custom codec support (unsupported XVID, AC3 by default)
  • ✔️ can play if only the video or audio stream is supported
  • ❌ crash when calling seekTo for some files (cf issue, related to artwork stream) by default, but workaround by downgrading FFmpeg to ff4.0--ijk0.8.20--20180704--001. Edit 2021/11/06: fixed with ff4.0--ijk0.8.8--20211030--926
  • ❌ HW acceleration (disabled by default) yields edge smear / green bar for videos with non-16x dimension, cf issue
  • ❌ HW acceleration codecs intermittently fail (e.g. [OMX.Exynos.avc.dec] ERROR(0x8000100b)) when seek-starting some videos (e.g. MP2TS with h264/HDPR)

CaiJingLong/flutter_ijkplayer

As of v0.3.5+1, backed by CaiJingLong/ijkplayer & bilibili/FFmpeg ff3.4--ijk0.8.7--20180103--001:

  • ✔️ support content URIs (DataSource.photoManagerUrl from v0.3.6, but need fork to support content URIs on Android <Q)
  • ✔️ custom codec support (unsupported AC3 by default)
  • ✔️ can play if only the video or audio stream is supported
  • ❌ unmaintained
  • ❌ HW acceleration (enabled by default) yields edge smear / green bar for videos with non-16x dimension, cf issue
  • ❌ HW acceleration codecs intermittently fail (e.g. [OMX.Exynos.avc.dec] ERROR(0x8000100b)) when seek-starting some videos (e.g. MP2TS with h264/HDPR)

solid-software/flutter_vlc_player

As of v6.0.1, backed by VLC:

  • ❌ unsupported content URIs
  • ✔️ extensive codec support
  • ✔️ HW acceleration yields no edge smear / green bar
  • ❌ based on PlatformView (virtual display), so: widget required for controller init, virtual display size limit, minSdkVersion 20
  • ❌ large: release appbundle (for android-arm64) at 70 MB v. 22 MB with fijkplayer v. 16 MB with video_player

video_player (flutter/plugins)

As of v2.1.1, backed by ExoPlayer & device codecs:

  • ✔️ support content URIs (via network constructor)
  • ❌ limited codec support (unsupported AVI/XVID, AC3, H.264 High?, unseekable FLV)
  • ❌ cannot play if only the video or audio stream is supported
  • ❌ HW acceleration (forced) yields edge smear / green bar for videos with non-16x dimension, cf issue

Image

brendan-duncan/image

As of v2.1.19:

  • ❌ does not support TIFF with JPEG compression (issue #184)
  • ❌ TIFF tile decoding is not public (issue #258)

dnfield/flutter_svg

As of v0.22.0:

  • ✔️ Dart-native rendering
  • ❌ CSS support out of scope (issue #105, etc.)
  • ❌ unsupported currentColor (issue #31)
  • ❌ unsupported out of order defs/references (issue #102)
  • ❌ limited support for %, mm or pt unit (issue #110)

Exif

drewnoakes/metadata-extractor

As of v2.16.0:

  • ✔️ license: Apache License 2.0
  • ✔️ language: JVM-friendly
  • ✔️ read many
  • ✔️ structured tags
  • ❌ writing not supported

AndroidX ExifInterface

As of v1.3.3:

  • ✔️ license: Apache License 2.0
  • ✔️ language: JVM-friendly
  • ✔️ read/write core image formats
  • ❌ write XMP along existing XMP instead of overwriting
  • ❌ unstructured tags (i.e. flatten the same tag used in different blocks)

dragon66/pixymeta-android

As of 2021/09/01:

  • ✔️ license: Eclipse Public License 1.0
  • ✔️ language: JVM-friendly
  • ✔️ read/write core image formats
  • ✔️ structured tags
  • ❌ inconvenient API
  • ❌ inconvenient release process (fixable by fork)
  • ❌ fail to open some files (String/byte[] issue)
  • ❌ missing Exif in PNG
  • ❌ partial/missing Exif in TIFF

sephiroth74/Android-Exif-Extended

As of v1.0.8:

  • ✔️ license: Apache License 2.0
  • ✔️ language: JVM-friendly
  • ❌ unmaintained

exiftool/exiftool

As of v12.30:

  • ✔️ license: Perl Artistic License
  • ❌ language: Perl
  • ✔️ read/write most
  • ❌ heavy

Exiv2/exiv2

As of v0.27.4:

  • ❌ license: GPL 2.0, preventing use of other libraries with incompatible licenses
  • ❌ language: C++
  • ✔️ read/write most

libexif/libexif

As of v0.6.22:

  • ✔️ license: LGPL 2.1
  • ❌ language: C
  • ✔️ read/write some image formats
  • ❌ which formats?