Convert Figma logo to code with AI

moonlight-stream logomoonlight-embedded

Gamestream client for embedded systems

1,500
325
1,500
99

Top Related Projects

Gamestream client for embedded systems

Host for Moonlight Streaming Client

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)

Quick Overview

Moonlight Embedded is an open-source implementation of NVIDIA's GameStream protocol for embedded systems and low-power devices. It allows users to stream games and applications from a compatible PC to various devices, including Raspberry Pi, smart TVs, and other Linux-based systems.

Pros

  • Enables game streaming on a wide range of devices, including low-power and embedded systems
  • Open-source nature allows for community contributions and customizations
  • Supports various input methods, including gamepads and keyboards
  • Provides low-latency streaming for a smooth gaming experience

Cons

  • Requires a compatible NVIDIA GPU on the host PC
  • May have limited performance on very low-end devices
  • Setup process can be complex for less tech-savvy users
  • Dependent on network quality for optimal performance

Getting Started

To get started with Moonlight Embedded:

  1. Install Moonlight Embedded on your device:

    sudo apt-get install moonlight-embedded
    
  2. Pair your device with the host PC:

    moonlight pair <PC_IP_ADDRESS>
    
  3. Stream a game or application:

    moonlight stream -app <APP_NAME> -1080 -60fps <PC_IP_ADDRESS>
    

For more detailed instructions and configuration options, refer to the project's GitHub repository and documentation.

Competitor Comparisons

Gamestream client for embedded systems

Pros of moonlight-embedded

  • Designed specifically for embedded systems and low-power devices
  • Optimized for performance on resource-constrained hardware
  • Supports a wide range of platforms, including Raspberry Pi and other SBCs

Cons of moonlight-embedded

  • May have fewer features compared to the full Moonlight client
  • Potentially more complex setup process for non-technical users
  • Limited graphical user interface options

Code Comparison

Both repositories contain similar code structures, as they are part of the same project. Here's a snippet from the main.c file in both repositories:

// moonlight-embedded
int main(int argc, char* argv[]) {
  CONFIGURATION config;
  config_parse(argc, argv, &config);
  // ...
}

// moonlight-embedded
int main(int argc, char* argv[]) {
  CONFIGURATION config;
  config_parse(argc, argv, &config);
  // ...
}

The code structure and functionality appear to be identical in both repositories. The main differences lie in the specific implementations and optimizations for embedded systems in the moonlight-embedded repository.

Host for Moonlight Streaming Client

Pros of Sunshine

  • Cross-platform support (Windows, Linux, macOS)
  • Supports both NVIDIA and AMD GPUs
  • More customizable streaming settings

Cons of Sunshine

  • Requires more setup and configuration
  • Less mature project with potential stability issues
  • Smaller community and less documentation

Code Comparison

Sunshine (C++):

void VideoEncoder::encode(const AVFrame* frame) {
    int ret = avcodec_send_frame(_codec_ctx, frame);
    if (ret < 0) {
        throw std::runtime_error("Error sending frame for encoding");
    }
}

Moonlight Embedded (C):

int encode(AVCodecContext *encoder_ctx, AVFrame *frame, AVPacket *pkt) {
    int ret = avcodec_send_frame(encoder_ctx, frame);
    if (ret < 0) {
        fprintf(stderr, "Error sending frame for encoding\n");
        return ret;
    }
    return 0;
}

Both projects use the FFmpeg library for video encoding, but Sunshine uses C++ with exception handling, while Moonlight Embedded uses C with error code returns.

Moonlight Embedded is a more established project with better stability and documentation, focusing on client-side streaming. Sunshine, on the other hand, offers more flexibility and cross-platform support but may require more technical expertise to set up and use effectively.

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)

Pros of Moonlight-qt

  • Cross-platform support (Windows, macOS, Linux)
  • User-friendly graphical interface
  • More frequent updates and active development

Cons of Moonlight-qt

  • Higher system requirements
  • Potentially less performant on low-end devices
  • May have more dependencies

Code Comparison

Moonlight-qt (C++/Qt):

void StreamSegue::startUp()
{
    m_Computer = m_ComputerManager->getComputer(m_ComputerName);
    if (m_Computer == nullptr) {
        emit displayLaunchError(tr("Computer not found"));
        return;
    }
}

Moonlight-embedded (C):

static int moonlight_init(void)
{
    char* config_file = get_config_file();
    if (config_file == NULL) {
        fprintf(stderr, "Not enough memory\n");
        exit(EXIT_FAILURE);
    }
}

Moonlight-qt uses C++ with Qt framework, providing a more structured and object-oriented approach. Moonlight-embedded uses C, which can be more lightweight but potentially less maintainable for complex applications. The qt version focuses on GUI elements and error handling, while the embedded version deals with low-level operations like memory management.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Moonlight Embedded

AppVeyor Build Status

Moonlight Embedded is an open source client for Sunshine and NVIDIA GameStream for embedded Linux systems, like Raspberry Pi, CuBox-i and ODROID. Moonlight allows you to stream your full collection of games and applications from your PC to other devices to play them remotely.

Moonlight also has PC, Android, and iOS clients.

Documentation

More information about installing and runnning Moonlight Embedded is available on the wiki.

Bugs

Please check the wiki and old bug reports before submitting a new bug report.

Bugs can be reported to the issue tracker.

See also

Moonlight-common-c is the shared codebase between different Moonlight implementations

Contribute

  1. Fork us
  2. Write code
  3. Send Pull Requests