📸 MJPEG Stream Flutter Package
Welcome to MJPEG Stream Flutter Package ! 🚀 This package allows you to stream MJPEG video in your Flutter application easily. Perfect for real-time camera feeds and IP camera streaming. 📷🎥
https://github.com/user-attachments/assets/c908688e-3cd0-45bc-a21b-359df1eac6a5
🌟 Features
📡 Live MJPEG streaming
🎨 Customizable width, height, and fit
⚡ Optimized for performance
🚀 Easy to integrate
🛠 Error handling and reconnection support
📜 Built-in logging for debugging
📦 Installation
Run this command:
With Flutter:
flutter pub add mjpeg_stream
Add this package to your pubspec.yaml:
dependencies:
mjpeg_stream: latest_version
OR
mjpeg_stream:
git:
url: https://github.com/MohammedShamseerPV/MJPEG-Stream.git
ref: main
Then, run:
flutter pub get
🛠 Usage
Import the package:
import 'package:mjpeg_stream/mjpeg_stream.dart' ;
Example Usage 🎬
import 'package:flutter/material.dart' ;
import 'package:mjpeg_stream/mjpeg_stream.dart' ;
void main () {
runApp (MyApp ());
}
class MyApp extends StatelessWidget {
@override
Widget build (BuildContext context) {
return MaterialApp (
title: 'MJPEG Stream Example' ,
home: Scaffold (
appBar: AppBar (title: Text ("MJPEG Stream" )),
body: Center (
child: MJPEGStreamScreen (
streamUrl: "http://your-ip-camera-url/video.mjpg" ,
width: 300.0 ,
height: 200.0 ,
fit: BoxFit .cover,
),
),
),
);
}
}
📚 Use this Package as a Library
📥 Depend on it
Run this command:
With Flutter:
flutter pub add mjpeg_stream
This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):
dependedfdfdfncies:
mjpeg_stream: ^latest_version
dependencies:
mjpeg_stream: ^latest_version
Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.
📌 Import it
Now in your Dart code, you can use:
import 'package:mjpeg_stream/mjpeg_stream.dart' ;
⚙️ API Reference
Property
Type
Description
streamUrl
String
The URL of the MJPEG stream.
fit
BoxFit
Defines how the image should be inscribed into the widget. Default: BoxFit.cover.
width
double
Width of the stream display. Default: double.infinity.
height
double
Height of the stream display. Default: 300.0.
timeout
Duration
Timeout for the network request. Default: 5 seconds.
enableLogging
bool
Enables logging for debugging. Default: false.
🚀 How It Works
The package establishes an HTTP connection to the MJPEG stream.
It processes the received image frames in real-time.
It updates the UI efficiently without performance issues.
It handles errors and reconnection automatically. ⚡
It provides logging for debugging purposes. 📜
🛠 Troubleshooting
❗ Stream Not Loading? Check if your URL is correct and accessible.
🔴 Slow Performance? Optimize the network or use a lower resolution stream.
💥 Crashes? Ensure the stream URL is reachable and error handling is implemented.
📝 Need Debugging? Enable logging by setting enableLogging: true.
🎯 Future Enhancements
✅ Add support for pause/play functionality
✅ Improve error handling
✅ Optimize performance for low-latency streaming
✅ Enhance logging and debugging features
📝 License
This package is open-source under the MIT License. Feel free to contribute! 😊
👨💻 Happy Coding! 🚀
🔗 Connect with Me
💰 Support My Work
If you found this package useful, consider supporting my work:
Uploading qr-code-phonePay.png…