max2000_dual_video 0.0.5
max2000_dual_video: ^0.0.5 copied to clipboard
Native synchronized dual-video playback for Flutter on Android (Media3 / ExoPlayer) and iOS (AVFoundation).
0.0.5 #
- Clips filmed with the phone the other way round (rotation tag 180, or 90/270)
now play upright. Each player reports
PlayerState.rotationDegrees-- the clip's rotation tag on Android (0 when Flutter's surface already applies it,SurfaceProducer.handlesCropAndRotation), the video track'spreferredTransformon iOS -- andMax2000DualVideoPlayerViewtakes it asrotationDegreesand turns the texture. Before, both platforms showed such clips upside down.
0.0.4 #
-
iOS implementation verified on a real iPhone (TestFlight build of the MAX2000 app): linked playback stays in sync, seeking and scrubbing work.
-
iOS support. New AVFoundation implementation of the same engine (
ios/Classes/DualVideoEngine.swift): twoAVPlayers, exact (zero tolerance) seeking, the same drift-correction thresholds and boundary behavior, frame stepping, linked and unlinked (per-player) modes, and per-player volume. Frames are rendered throughFlutterTexture(fed by anAVPlayerItemVideoOutput+CADisplayLink), matching Android's texture-based rendering. Same channels, commands and state wire shape, so the Dart API is unchanged.
0.0.3 #
- Rendering rewrite: video surfaces now come from Flutter's own
TextureRegistry/Texturewidget (the same mechanismpackage:video_playeruses) instead of aPlatformView. Fixes a black video window that persisted until an unrelated touch elsewhere in the app forced a relayout. - Breaking:
Max2000DualVideoPlayerViewnow takestextureId(int?, fromDualVideoEngineState.textureIdA/textureIdB) instead ofplayer(String). - Removed the
media3-uidependency (no longer needed).
0.0.2 #
- Lowered the Dart SDK constraint to
>=3.0.0 <4.0.0for build compatibility with older toolchains.
0.0.1 #
- Initial release: production dual-video synchronization engine
(
Max2000DualVideoEngine) with linked master-timeline playback and independent per-player (unlinked) mode.