NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #207 most downloaded on pub.dev
Android implementation of the video_player plugin.
Last release 1 months ago
02 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
5 years old
86 releases · first in 2022
One column per quarter.
VideoSize.pixelWidthHeightRatio was never read, so videos stored with non-square pixels (anamorphic content) reported their coded size instead of thei
VideoSize.pixelWidthHeightRatio was never read, so videos stored with non-square pixels (anamorphic content) reported their coded size instead of their display size. VideoPlayerValue.size therefore carried the wrong aspect ratio and such videos rendered stretched.
Example of a real affected file: coded 1080x720 with a 3:8 pixel aspect ratio displays as 405x720, but size was reported as 1080x720 — a 2.67x horizontal stretch.
This scales the reported width by the pixel aspect ratio, which is what media3's own PlayerView does:
float videoAspectRatio = (height == 0 || width == 0) ? 0 : (width * videoSize.pixelWidthHeightRatio) / height;Both event listeners are updated:
pixelWidthHeightRatio that already accounts for any applied rotation (MediaCodecVideoRenderer inverts it for 90°/270°), so the ratio is applied to the reported width regardless of the rotation correction.Format.pixelWidthHeightRatio describes the unrotated frame, so the ratio is applied before the existing width/height swap.The scaling is skipped unless the ratio is greater than 0 and not 1, so playback of ordinary square-pixel video is byte-for-byte unchanged.
Verified on a physical anamorphic sample (1080x720, SAR 3:8) on Android 15: previously stretched, now rendered at the correct 9:16 display aspect. iOS is unaffected — video_player_avfoundation already reports presentationSize, which is pixel-aspect corrected, which is why this bug is Android-only.
(No before/after screenshots: the sample videos available to me are private medical content and cannot be published.)
Fixes flutter/flutter#132934
Fixes flutter/flutter#94234
Updates pigeon dev_dependency constraint to ^27.3.2 across first-party packages to ensure compatibility with analyzer: ^14.0.0 during pub downgrade re
Updates pigeon dev_dependency constraint to ^27.3.2 across first-party packages to ensure compatibility with analyzer: ^14.0.0 during pub downgrade resolution.
test dev_dependencies from plugin packages that already depend on flutter_test.pigeon constraint to ^27.3.2 across all 36 first-party plugin packages.in_app_purchase_storekit to rename SK2ProductMessage.description to localizedDescription for Swift Pigeon 27.0+ compatibility.CHANGELOG.md files.Fixes a bug where some videos report an incorrect duration when initialized without a video duration.
Adds backBufferDurationMs to CreationOptions to configure ExoPlayer DefaultLoadControl back buffer duration.
backBufferDurationMs to CreationOptions to configure ExoPlayer DefaultLoadControl back buffer duration.Implements getVideoTracks() and selectVideoTrack() methods for video track (quality) selection using ExoPlayer.
getVideoTracks() and selectVideoTrack() methods for video track (quality) selection using ExoPlayer.Fixes a bug where the video freezes after returning from a full-screen transition on Android.
Migrates to Built-in Kotlin to support AGP 9.
Updates build files from Groovy to Kotlin.
Updates androidx.media3 to 1.9.2.
androidx.media3 to 1.9.2.Updates androidx.media3 to 1.9.1.
androidx.media3 to 1.9.1.* Updates to Pigeon 26.1.5.
Implements getAudioTracks() and selectAudioTrack() methods for Android using ExoPlayer.
getAudioTracks() and selectAudioTrack() methods for Android using ExoPlayer.Bumps kotlin_version to 2.2.21.
Bumps com.android.tools.build:gradle from 8.12.1 to 8.13.1.
* Updates to Pigeon 26.
Moves video event processing logic to Dart, and fixes an issue where buffer range would not be updated for a paused video.
Updates Java compatibility version to 17 and minimum supported SDK version to Flutter 3.35/Dart 3.9.
Resolves Gradle 9 deprecations.
Restructures internal logic for player creation and tracking.
Bumps com.android.tools.build:gradle to 8.12.1.
Moves buffer position update event generation to Dart.
Updates kotlin version to 2.2.0 to enable gradle 8.11 support.
Restructures internal logic to move more code to Dart.
Restructures the communication between Dart and Java code.
Adds note about known issue regarding platform views to the README.
Fixes a bug where the isBuffering flag always returns true after seeking to any position.
isBuffering flag
always returns true after seeking to any position.Replaces deprecated onSurfaceDestroyed with onSurfaceCleanup.
onSurfaceDestroyed with onSurfaceCleanup.Fixes incorrect width/height swap (bug). The swap was originally required for the uncorrected width/height of Format but was mistakenly retained after
Format but was mistakenly retained after switching to VideoSize, which already accounts for rotation.Transform.rotate not affecting space calculation (following #8685).Changes plugin to use TextureRegistry.SurfaceProducer.handlesCropAndRotation to detect whether or not the video player rotation needs to be corrected.
TextureRegistry.SurfaceProducer.handlesCropAndRotation to detect
whether or not the video player rotation needs to be corrected.Fixes a bug that can cause video to disappear after an app is suspended and resumed.
Updates compileSdk 34 to flutter.compileSdkVersion.
Suppresses deprecation and removal warnings for TextureRegistry.SurfaceProducer.onSurfaceDestroyed.
TextureRegistry.SurfaceProducer.onSurfaceDestroyed.Replaces deprecated Android embedder APIs (onSurfaceCreated -> onSurfaceAvailable).
onSurfaceCreated -> onSurfaceAvailable).Updates internal Pigeon API to use newer features.
Changes the rotation correction calculation for Android API 29+ to use the one that is reported by the video's format instead of the unapplied rotatio
When AndroidVideoPlayer attempts to operate on a textureId that is not active (i.e. it was previously disposed or never created), the resulting platfo
AndroidVideoPlayer attempts to operate on a textureId that is not
active (i.e. it was previously disposed or never created), the resulting
platform exception is more informative than a "NullPointerException".Fixes a bug where additional harmless but annoying warnings in the form of native stack traces would be printed when the app was backgrounded. There m
Fixes a bug where a harmless but annoying warning in the form of a native stack trace would be printed when a previously disposed video player receive
Fixes a bug where disposing a video player (including implicitly by switching tabs or views in a running app) would cause native stack traces.
Updates Java compatibility version to 11.
Updates Pigeon for non-nullable collection type support.
Removes the flag to treat warnings as errors in client builds.
Fixes a bug where resuming a video player would cause a Bad state: Future already completed.
Bad state: Future already completed.Add a deprecation suppression in advance of a new SurfaceProducer API.
SurfaceProducer API.Updates Media3-ExoPlayer to 1.4.1.
Updates minimum supported SDK version to Flutter 3.24/Dart 3.5.
* Revert Impeller support.
* Re-adds support for Impeller.
* Adds RTSP support.
Updates Media3-ExoPlayer to 1.4.0.
Updates lint checks to ignore NewerVersionAvailable.
Updates Android Gradle plugin to 8.5.0.
Removes additional references to the v1 Android embedding.
Migrates ExoPlayer to Media3-ExoPlayer 1.3.1.
* Revert Impeller support.
* Supports Impeller.
Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
Calls onDestroy instead of initialize in onDetachedFromEngine.
onDestroy instead of initialize in onDetachedFromEngine.Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.
Updates compileSdk version to 34.
BehindLiveWindowException, which may occur upon live-video playback failure.Your coding agent can read these notes before it upgrades. Set up the MCP server →