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:
-
Install Moonlight Embedded on your device:
sudo apt-get install moonlight-embedded
-
Pair your device with the host PC:
moonlight pair <PC_IP_ADDRESS>
-
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Moonlight Embedded
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
- Fork us
- Write code
- Send Pull Requests
Top Related Projects
Gamestream client for embedded systems
Host for Moonlight Streaming Client
GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot