Skip to content

Initial Requirements #1

@jasonpcrowley

Description

@jasonpcrowley

StreamView Requirements

1. Project Overview

1.1. Project Name

StreamView

1.2. Project Description

StreamView is a fork of the open-source displaycameras project, designed to display IP camera streams on a Raspberry Pi. The primary difference between StreamView and displaycameras is the replacement of omxplayer with VLC for better compatibility and functionality with a broader range of media formats and streaming protocols. StreamView will maintain a lightweight, easy-to-install architecture suitable for resource-limited hardware.

1.3. Objectives

  • Fork displaycameras to create a new project: StreamView.
  • Replace omxplayer with VLC as the media player for displaying camera streams.
  • Maintain compatibility with existing hardware (e.g., Raspberry Pi).
  • Ensure StreamView can handle multiple camera streams simultaneously (at least 12).
  • Improve ease of use and configuration for end-users.

2. Functional Requirements

2.1. VLC Integration

  • Requirement: VLC must be fully integrated as the default media player.
  • Details: StreamView should leverage VLC's wide protocol and codec support (RTSP, HLS, HTTP) for streaming.
  • Success Criteria: VLC replaces omxplayer across all use cases without loss of functionality. VLC must support video scaling, cropping, and positioning as per configuration.

2.2. Camera Stream Handling

  • Requirement: StreamView must be able to display at least 12 simultaneous IP camera streams.
  • Details: The software should support various camera stream formats, including but not limited to H.264, MJPEG, and HEVC.
  • Success Criteria: Simultaneous streams from multiple cameras must be displayed without significant performance degradation.

2.3. Configuration File Adaptation

  • Requirement: Modify the existing configuration files from displaycameras to support VLC-specific options.
  • Details: Users should be able to specify VLC-related configurations such as buffering settings, stream protocols, and display window layouts.
  • Success Criteria: Configuration files must be updated without changing the overall user experience. Configurations specific to omxplayer will be replaced with corresponding VLC options.

2.4. User Interface (UI)

  • Requirement: Maintain a simple command-line based interface for advanced users while ensuring that configuration remains accessible.
  • Details: StreamView should offer basic UI improvements if needed for VLC-specific controls.
  • Success Criteria: No complex UI changes are necessary unless required for VLC integration.

2.5. Performance Optimizations

  • Requirement: StreamView must perform efficiently on Raspberry Pi and similar resource-limited devices.
  • Details: Efforts should be made to minimize CPU and memory usage, particularly when running multiple camera streams.
  • Success Criteria: CPU and memory usage must stay within acceptable limits during operation.

3. Non-Functional Requirements

3.1. Platform Compatibility

  • Requirement: StreamView must be compatible with Raspberry Pi (Raspbian OS) and similar Linux-based devices.
  • Details: The application must work seamlessly with lightweight operating systems on hardware with limited resources.
  • Success Criteria: The software must run smoothly on Raspberry Pi 3/4 models without significant lag or freezing.

3.2. Scalability

  • Requirement: StreamView should support scalability to accommodate different numbers of camera streams as needed.
  • Details: The application should allow for scaling from one to at least 12 simultaneous camera streams without significant performance issues.
  • Success Criteria: StreamView must handle at least 12 concurrent camera streams without noticeable latency or dropped frames.

3.3. Reliability

  • Requirement: The system should be highly reliable and able to recover from network outages or stream interruptions.
  • Details: The application must handle temporary stream loss or disconnection and attempt automatic recovery.
  • Success Criteria: StreamView should resume operation smoothly after a network outage, without user intervention.

3.4. Security

  • Requirement: Implement basic security practices to avoid vulnerabilities when connecting to IP cameras.
  • Details: Ensure that VLC integrates with secure protocols like HTTPS and RTSP over TLS where available.
  • Success Criteria: StreamView must securely handle IP camera connections and avoid common security pitfalls like open ports or insecure protocols.

4. Technical Specifications

4.1. Languages and Libraries

  • Primary Language: Bash or Python (matching the original displaycameras project)
  • Player: VLC (replace omxplayer)
  • Supported Protocols: RTSP, HTTP, HTTPS, HLS, UDP

4.2. Hardware Requirements

  • Target Hardware: Raspberry Pi 3/4, other similar devices
  • Memory: Minimum 1 GB of RAM recommended
  • Storage: At least 4 GB free space for OS, software, and logs

5. Installation and Setup

5.1. Dependencies

  • VLC Media Player
  • Bash or Python (matching the original setup)

5.2. Installation Instructions

  • Provide step-by-step installation instructions for users, covering:
    • Setting up VLC
    • Configuring the StreamView service
    • Configuring camera streams

6. Testing and Validation

6.1. Unit Testing

  • Test integration of VLC for different stream formats.
  • Ensure that configurations load and apply correctly.

6.2. Performance Testing

  • Test the system with multiple camera streams (e.g., 12) and measure CPU, memory usage, and latency.

6.3. Failure Recovery Testing

  • Test recovery from network outages, stream disconnection, or VLC crashes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions