Search packages, repositories and app categories

Package detailsv1.0.1

mjpeg_stream

A Flutter package for streaming MJPEG (Motion JPEG) video over HTTP

AndroidiOSmacOSWindowsLinux
30-day downloads
112
Likes
3
Pub points
125

Install package

flutter pub add mjpeg_stream

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The mjpeg_stream package enables Flutter applications to stream MJPEG (Motion JPEG) video over HTTP, providing a lightweight solution for real-time video playback from IP cameras or web servers. It supports multiple platforms including Android, iOS, macOS, Windows, and Linux, making it ideal for cross-platform video monitoring apps. The package handles HTTP streaming efficiently with minimal latency, allowing developers to integrate live video feeds directly into their UIs. It is particularly useful in surveillance, robotics, and IoT applications where continuous video streams are required.

Use cases

  • Live camera monitoring
  • IoT device video feed integration
  • Robotics vision systems
  • Surveillance dashboards
  • Remote diagnostics

Key features

  • Supports MJPEG over HTTP
  • Cross-platform compatibility
  • Low-latency streaming
  • Simple integration with Flutter widgets
  • Real-time video playback

Suitable for

  • Developers building surveillance apps
  • IoT project creators
  • Robotics engineers
  • Apps requiring live video feeds
  • Cross-platform video solutions

Considerations

  • Requires stable network connection
  • Limited to MJPEG format
  • May need additional buffering for low bandwidth
  • Not suitable for high-resolution video streams
  • Depends on server-side MJPEG streaming support

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

📸 MJPEG Stream Flutter Package

mjpegLogo1

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

screen4

screen3

🌟 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  # Optional: specify the branch (default is '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

  1. The package establishes an HTTP connection to the MJPEG stream.
  2. It processes the received image frames in real-time.
  3. It updates the UI efficiently without performance issues.
  4. It handles errors and reconnection automatically. ⚡
  5. 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:

qr-code-phonePay

Uploading qr-code-phonePay.png…

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package

No data available yet.