hq_video_player 0.1.0
hq_video_player: ^0.1.0 copied to clipboard
A high-performance Flutter video player package powered by media_kit & flutter_bloc with gesture controls, subtitle rendering, and modern video controls.
0.1.0 #
- Controller & Multi-Player Management Architecture:
HqVideoPlayerController: Programmatically control playback (play(),pause(),togglePlayPause(),seekTo(),setVolume(),setPlaybackSpeed(),setMute(),loadUrl()) and listen to reactiveValueNotifier<HqVideoPlayerValue>state changes.HqVideoPlayerManager: Central singleton registry (HqVideoPlayerManager.instance) for managing multiple active controllers with automatic single-active-player enforcement (autoPauseOthers: true) and batch operations (pauseAll(),muteAll(),unmuteAll(),playOnly(),disposeAll()).HqVideoPoolManager: LRU controller pool manager for swipable vertical video feeds (Reels, TikTok, Shorts) with configurablemaxPoolSizeand chunked asynchronous eviction (Future.delayed(Duration.zero)) yielding to the main thread to protect RAM and eliminate Codec OOM crashes.
- Enhanced
HqVideoPlayerWidget Integration:- Added optional
HqVideoPlayerController? controllerandautoRegisterManagerparameters toHqVideoPlayerconstructors. - Support for dynamic controller switching in
didUpdateWidget.
- Added optional
- Showcase Example App Update:
- Added a new "Multi-Player & Controllers" tab showcasing side-by-side video card controllers, batch global actions, and a vertical Reels feed using
HqVideoPoolManager.
- Added a new "Multi-Player & Controllers" tab showcasing side-by-side video card controllers, batch global actions, and a vertical Reels feed using
- Documentation & Screenshots:
- Added visual screenshots showcasing standard player, subtitles, gesture overlay, custom theme, callbacks, and multi-controller feed pool.
0.0.1 #
- Initial Release of
hq_video_player. - Core Engine: Built on top of
media_kitfor hardware-accelerated video rendering andflutter_blocfor robust state management. - Explicit Enum Source Architecture (
HqVideoSourceType,HqSubtitleSourceType,HqPosterSourceType):HqVideoSourceType: Explicit enum for Video sources (network,asset,file) with named constructors (HqVideoPlayer.network,HqVideoPlayer.asset,HqVideoPlayer.file).HqSubtitleSource: Explicit enum and model for Subtitle sources (HqSubtitleSource.network,HqSubtitleSource.asset,HqSubtitleSource.file).HqPosterSource: Explicit enum and model for Poster thumbnail image sources (HqPosterSource.network,HqPosterSource.asset,HqPosterSource.file).
- Fullscreen Route System & Vertical Video Preset (
HqVideoPlayerBehavior.vertical()):- Immersive sticky full-screen navigation route with system UI hiding and orientation locking.
HqVideoPlayerBehavior.vertical()preset for short-form vertical videos (TikTok, Shorts, Reels, Stories) expanding vertically without auto-rotating.
- In-Stream Subtitles & Multi-Audio Track Selection:
- Popover modal menus for selecting in-stream embedded subtitle tracks (SRT, VTT, ASS/SSA) and multi-audio stream tracks.
- Asset & File Auto URI Formatting: Automatic URI resolution for any Flutter asset directory path (
asset:///assets/...), local file path (file://...), and network stream. - Picker-Style Customization Architecture (
HqVideoPlayerConfig):HqVideoPlayerTheme: Complete control over primary colors, overlays, timeline track/handle, popover menus, and text styles.HqVideoPlayerLocalizations: Full control over all text labels with a built-in Arabic preset (HqVideoPlayerLocalizations.ar()).HqVideoPlayerIcons: Customizable icon widget overrides across all controls and gesture overlays.HqVideoPlayerGestures: Custom seek seconds, hold speed multiplier, toggle double-tap, vertical volume/brightness, and pinch-to-zoom.HqVideoPlayerBehavior: Custom auto-hide controls timer, initial volume, start muted, mute toggle button, autoPlay, looping, and allowed playback speeds list.HqVideoPlayerControlsConfig: Granular toggles for top bar, title, speed, timeline, and lock buttons.HqVideoPlayerTimelineConfig: Custom track height, thumb radius, drag thumb radius, and buffered track visibility.HqVideoPlayerTransformConfig: Custom rotation angle (0°, 90°, 180°, 270°), horizontal/vertical mirroring (flip), and aspect ratio constraints.HqVideoPlayerAudioConfig: Audio volume boost up to 200% (maxVolume: 2.0) and volume step granularity.HqVideoPlayerBrightnessConfig: Initial screen brightness and gesture step granularity.HqVideoPlayerPipConfig: Picture-in-Picture floating miniplayer width (pipWidth), aspect ratio (pipAspectRatio), corner radius (pipCornerRadius), screen margin, and drag toggle.HqVideoPlayerHapticsConfig: Granular haptic feedback toggles for seek, lock, and speed boost gestures (enableHapticsOnSeek,enableHapticsOnLock,enableHapticsOnSpeedBoost).HqVideoPlayerFilterConfig: Cinematic video color filters (grayscale,sepia).HqVideoPlayerLoopConfig: Custom A-B range looping betweenstartPositionandendPosition.HqVideoPlayerSkipConfig: Auto-skipping video intro/outro (autoSkipIntro,introDuration,outroDuration).HqVideoPlayerLoadingConfig: Buffering indicator visibility, size (loadingIndicatorSize), and color (loadingIndicatorColor).HqVideoPlayerPosterConfig: Support for video poster thumbnail images viaHqPosterSource(posterSource,posterFit,showPosterOnEnd).HqVideoPlayerSeekFeedbackConfig: Custom double-tap seek animation ripple duration and colors (showSeekFeedbackRipple,rippleColor,rippleDuration).HqVideoPlayerTrackOptions: Support for audio & subtitle stream track selection options.HqVideoPlayerCustomWidgets: Support for custom watermark overlays, custom top/bottom bars, custom overlays (SKIP INTRO), custom controls builder, custom loading spinners, and error widgets.HqVideoPlayerSubtitleConfig: Customizable subtitle font size, font family, text/background colors, and bottom padding.HqVideoPlayerNetworkConfig: Support for custom HTTP headers (customHeadersfor auth tokens/cookies) and weak network timeouts.HqVideoPlayerCallbacks: Live callbacks foronPositionChanged,onPlayingChanged,onFullscreenChanged,onVolumeChanged,onSpeedChanged,onSeek,onBufferingChanged,onFitModeChanged,onLockChanged, andonSubtitleChanged.
- Interactive Gesture Overlay: Double-tap seek, vertical swipe for volume and brightness, long-press for speed boost, and 2-finger pinch-to-zoom.
- Subtitle System: SubRip (
.srt) and WebVTT (.vtt) subtitle parser and synchronized overlay renderer with asset, network, and file support. - Miniplayer Service: Draggable picture-in-picture floating overlay with customizable dimensions and smooth transition.
- Zero
setStateArchitecture: Clean state management driven entirely byHqVideoPlayerBlocand optimizedBlocSelectorrebuilds.