Skip to main content

Simple MJPEG streamer for Python

Reason this release was yanked:

Not working on Linux

Project description

mjpeg-streamer

Overview

The mjpeg-streamer package provides a simple and efficient way to stream MJPEG video from OpenCV-compatible sources over HTTP. It provides a flexible interface that allows users to specify the video source and configure various parameters such as image size, quality, and FPS.

Installation

You can install the package via pip:

pip install mjpeg-streamer

Usage

Here's a simple example that shows how to use the MJPEG Server package to stream video from a webcam:

import cv2
from mjpeg_streamer import MjpegServer, Stream

cap = cv2.VideoCapture(0)

stream = Stream("my_camera", size=(640, 480), quality=50, fps=30)

server = MjpegServer("localhost", 8080)
server.add_stream(stream)
server.start()

while True:
    _, frame = cap.read()
    cv2.imshow(stream.name, frame)
    if cv2.waitKey(1) == ord("q"):
        break

    stream.set_frame(frame)

server.stop()

This example starts the MJPEG server on localhost:8080 and streams video from the default webcam. The video is resized to 640x480 pixels, compressed with JPEG quality of 50, and streamed at 30 FPS.

To view the video stream, you can open a web browser and navigate to http://localhost:8080/my_camera.

Class Reference

Stream

A class that represents a single video stream. A stream consists of a sequence of frames that can be set and retrieved using the set_frame and _get_frame methods.

Constructor:

Stream(name: str, size: Optional[Tuple[int, int]] = None, quality: int = 50, fps: int = 24)

Creates a new Stream instance with the given unique name, image size, JPEG quality (1-100), and FPS.

Methods:

  • set_frame

    set_frame(frame: np.ndarray)
    

    Sets the current frame to the given Numpy array (OpenCV frame).


  • _get_frame (private)

    _get_frame()
    

    Returns the current frame as a Numpy array.

MjpegServer

A class that represents an MJPEG server. The server can serve multiple video streams, each identified by a unique name.

Constructor:

MjpegServer(host: str = "localhost", port: int = 8080)

Creates a new MjpegServer instance with the given host and port.

Methods:

  • add_stream

    add_stream(stream: Stream)
    

    Adds a new video stream to the server.


  • start

    start()
    

    Starts the server in a separate thread.


  • stop

    stop()
    

    Stops the server.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mjpeg-streamer-2023.3.19.tar.gz (15.7 kB view details)

Uploaded Source

File details

Details for the file mjpeg-streamer-2023.3.19.tar.gz.

File metadata

  • Download URL: mjpeg-streamer-2023.3.19.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for mjpeg-streamer-2023.3.19.tar.gz
Algorithm Hash digest
SHA256 b0cdf370fc00a5672d0a3540f54279e3f5063a8b9dd2c3b0d8d671f1f5680a0c
MD5 45e5ff5b7ff27dd0c746b60e677bfcff
BLAKE2b-256 72f240d9e866116eb07dd423c1b374ad420aa01f782359777b164095ba2b204e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page