houseoftech_video_player 1.0.0 copy "houseoftech_video_player: ^1.0.0" to clipboard
houseoftech_video_player: ^1.0.0 copied to clipboard

PlatformAndroid

A modern reels-ready customizable network video player for Flutter with lifecycle and visibility handling.

houseoftech_video_player #

A modern, reels-ready, customizable network video player for Flutter.

houseoftech_video_player is built for real-world performance. It provides automatic lifecycle handling, route awareness, visibility-based playback control, and optimized support for vertical reel-style feeds like Instagram or TikTok.

https://github.com/user-attachments/assets/f1f8e44a-3425-4870-aa0e-35beab325ad8


โœจ Features #

  • ๐ŸŽฅ Network video playback (mp4, m3u8, etc.)
  • ๐Ÿ” Reels mode (auto play/pause based on visibility)
  • ๐Ÿ”„ Route-aware auto pause
  • ๐Ÿ“ฑ App lifecycle handling (background/foreground safety)
  • ๐ŸŽ› External controller support
  • โšก Optimized for PageView reels
  • ๐Ÿง  Safe async initialization (prevents ghost audio issues)
  • ๐Ÿงน Proper resource disposal to prevent memory leaks
  • ๐ŸŽจ Custom top & bottom overlay support
  • ๐Ÿ“ฅ Download video with overlays rendered
  • ๐ŸŽฌ Animated overlay support with multiple animation types
  • ๐Ÿ”Š Built-in Text-to-Speech (TTS) audio generation
  • ๐ŸŽต Custom external audio merging support
  • ๐Ÿ“ค Built-in share functionality
  • ๐Ÿงฉ Custom download & share callbacks
  • ๐Ÿ“Š Download/share status callbacks with progress tracking
  • ๐ŸŽš Customizable overlay animation positions
  • ๐Ÿ–ผ Aspect ratio customization (9/16, 16/9, 1:1, etc.)
  • ๐Ÿ”„ Auto-play & loop control options
  • ๐ŸŽจ Customizable download & share button styles
  • ๐Ÿ“‚ Custom folder saving support
  • ๐ŸŽฏ Configurable overlay control positioning
  • ๐Ÿงฑ Even-dimension scaling for FFmpeg compatibility
  • ๐Ÿš€ Faststart MP4 optimization for smooth playback
  • ๐Ÿ›ก Null-safe & production-ready architecture

๐Ÿ“ฆ Installation #

Add the dependency to your pubspec.yaml:

dependencies:
  houseoftech_video_player: ^1.0.0

Then run:

flutter pub get

๐Ÿš€ Some important permissions #



<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


<!-- Internet (required for downloading video) -->
<uses-permission android:name="android.permission.INTERNET"/>

<!-- Android 13+ (API 33+) -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>

<!-- Android 12 and below -->
<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />


๐Ÿš€ Overlay Jar Video Player #

import 'package:flutter/material.dart';
import 'package:houseoftech_video_player/houseoftech_video_player.dart';

final controller = HouseOfTechController();



///
// this must be true 
// for downloading and sharing the video with or without overlay 
// downloadWithOverlay: true,
///
HouseOfTechVideoPlayerOverlay(
  url: videoUrl,
  aspectRatio: 9 / 16,
  reelsMode: true,

  /// Enable download with overlays
  downloadWithOverlay: true,

  /// ๐Ÿ”Š This will generate TTS and merge as audio
  ttsText: "Hello Sagar",

  /// Bottom overlay widget
  bottomStripe: Container(
    color: Colors.red,
    width: double.infinity,
    height: 70,
    alignment: Alignment.center,
    child: const Text(
      "Hello Sagar",
      style: TextStyle(
        color: Colors.white,
        fontSize: 18,
        fontWeight: FontWeight.bold,
      ),
    ),
  ),

  /// Optional top overlay
  // topStripe: Container(
  //   color: Colors.green,
  //   height: 50,
  //   alignment: Alignment.center,
  //   child: const Text("Hello leaders"),
  // ),

  /// Optional animation overlay
  // animatedOverlay: Image.asset("assets/anim.png"),
  // animationType: OverlayAnimationType.centerToBottom,

  /// Optional custom folder
  // folderName: "SanatanVideos",

  /// Optional callbacks
  // onDownloadComplete: (success) {
  //   print("Download completed: $success");
  // },

  // onShareComplete: (success) {
  //   print("Share completed: $success");
  // },
);

///types of Overlay Animations
enum OverlayAnimationType {
  none, /// defauls to 'top left' 

  // Basic
  topToCenter,
  rightToCenter,
  leftToCenter,
  bottomToCenter,
  leftToRight,
  rightToLeft,

  // Diagonal
  diagonalTopLeftToBottomRight,
  diagonalTopRightToBottomLeft,
  diagonalBottomLeftToTopRight,
  diagonalBottomRightToTopLeft,
}

๐ŸŽฌ Reels Mode #

Reels mode automatically plays the video when it becomes visible and pauses it when it goes out of view.

HouseOfTechVideoPlayer(
  controller: controller,
  url: videoUrl,
  reelsMode: true,
);
PageView.builder(
  scrollDirection: Axis.vertical,
  itemCount: videoList.length,
  itemBuilder: (context, index) {
    final controller = HouseOfTechController();

    return HouseOfTechVideoPlayer(
      controller: controller,
      url: videoList[index],
      reelsMode: true,
    );
  },
);

๐ŸŽ› Controller API #

You can control playback manually using the controller:

controller.play();
controller.pause();
controller.seekTo(Duration(seconds: 10));
controller.dispose();

๐Ÿ”„ Lifecycle & Route Handling #

houseoftech_video_player automatically:

  • Pauses when navigating to a new route
  • Pauses when app goes to background
  • Resumes safely when returning
  • Prevents audio leaks during fast scroll

๐Ÿงฉ Best Practices #

  • Dispose controllers properly when no longer needed.
  • Use reelsMode: true inside PageView for best performance.
  • Avoid initializing multiple heavy videos simultaneously on low-end devices.

๐Ÿ“š Example #

A complete working example is available inside the example/ folder of this package.


๐Ÿ›  Requirements #

  • Flutter 3.10+
  • Dart >=3.0.0 <4.0.0

๐Ÿ“ License #

MIT License

Copyright (c) 2026 House Of Tech

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish the Software.

1
likes
150
points
71
downloads

Publisher

unverified uploader

Weekly Downloads

A modern reels-ready customizable network video player for Flutter with lifecycle and visibility handling.

Topics

#video #player #reels #download #animated

Documentation

API reference

License

MIT (license)

Dependencies

ffmpeg_kit_flutter_new_https_gpl, flutter, flutter_cache_manager, flutter_tts, http, media_store_plus, path_provider, permission_handler, share_plus, video_player, visibility_detector

More

Packages that depend on houseoftech_video_player