moonlight-stream/moonlight-qt

GitHub: moonlight-stream/moonlight-qt

跨平台开源游戏串流客户端,支持将本地 PC 游戏低延迟地串流到多种设备。

Stars: 16420 | Forks: 992

# Moonlight PC [Moonlight PC](https://moonlight-stream.org) 是 NVIDIA GameStream 和 [Sunshine](https://github.com/LizardByte/Sunshine) 的开源 PC 客户端。 Moonlight 还有适用于 [Android](https://github.com/moonlight-stream/moonlight-android) 和 [iOS](https://github.com/moonlight-stream/moonlight-ios) 的移动版本。 您可以在我们的 [Discord 服务器](https://moonlight-stream.org/discord) 上关注开发进度,并在 [Weblate](https://hosted.weblate.org/projects/moonlight/moonlight-qt/) 上帮助将 Moonlight 翻译成您的语言。 [![Build](https://img.shields.io/github/actions/workflow/status/moonlight-stream/moonlight-qt/build.yml?branch=master)](https://github.com/moonlight-stream/moonlight-qt/actions/workflows/build.yml?query=branch%3Amaster) [![Downloads](https://img.shields.io/github/downloads/moonlight-stream/moonlight-qt/total)](https://github.com/moonlight-stream/moonlight-qt/releases) [![Translation Status](https://hosted.weblate.org/widgets/moonlight/-/moonlight-qt/svg-badge.svg)](https://hosted.weblate.org/projects/moonlight/moonlight-qt/) ## 功能特性 - 在 Windows、Mac 和 Linux 上支持硬件加速视频解码 - 支持 H.264、HEVC 和 AV1 编解码器(AV1 需要 Sunshine 和支持的主机 GPU) - 支持 YUV 4:4:4(仅限 Sunshine) - 支持 HDR 流传输 - 支持 7.1 环绕声 - 支持 10 点多点触控(仅限 Sunshine) - 支持最多 16 位玩家的手柄,包括力反馈和体感控制 - 支持指针捕获(用于游戏)和直接鼠标控制(用于远程桌面) - 支持将 Alt+Tab 等系统级快捷键传递给主机 ## 下载 - [Windows、macOS 和 Steam Link](https://github.com/moonlight-stream/moonlight-qt/releases) - [Snap(适用于基于 Ubuntu 的 Linux 发行版)](https://snapcraft.io/moonlight) - [Flatpak(适用于其他 Linux 发行版)](https://flathub.org/apps/details/com.moonlight_stream.Moonlight) - [AppImage](https://github.com/moonlight-stream/moonlight-qt/releases) - [Raspberry Pi 4 和 5](https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-Raspberry-Pi-4) - [通用 ARM 32 位和 64 位 Debian 软件包](https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-ARM%E2%80%90based-Single-Board-Computers)(不适用于 Raspberry Pi) - [实验性 RISC-V Debian 软件包](https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-RISC%E2%80%90V-Single-Board-Computers) - [NVIDIA Jetson 和 Nintendo Switch (Ubuntu L4T)](https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-Linux4Tegra-(L4T)-Ubuntu) ### 每夜构建 - [下载](https://nightly.link/moonlight-stream/moonlight-qt/workflows/build/master) ## 构建 ### Windows 构建要求 * Qt 6.7 SDK 或更高版本(早期版本可能可用,但不在官方支持范围内) * [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/)(社区版即可) * 在安装 Qt 期间选择 **MSVC** 选项。不支持 MinGW。 * [7-Zip](https://www.7-zip.org/)(仅当为非开发 PC 构建安装程序时需要) * Graphics Tools(仅在运行调试构建时需要) * 在 Windows 设置应用的“可选功能”页面中安装“Graphics Tools”。 * 或者,运行 `dism /online /add-capability /capabilityname:Tools.Graphics.DirectX~~~~0.0.1.0` 并重启。 ### macOS 构建要求 * Qt 6.7 SDK 或更高版本(早期版本可能可用,但不在官方支持范围内) * Xcode 14 或更高版本(早期版本可能可用,但不在官方支持范围内) * [create-dmg](https://github.com/sindresorhus/create-dmg)(仅当构建用于非开发 Mac 的 DMG 时需要) ### Linux/Unix 构建要求 * 推荐使用 Qt 6,但也支持 Qt 5.12 或更高版本(使用 Qt 5 时请将 `qmake6` 替换为 `qmake`)。 * GCC 或 Clang * FFmpeg 4.0 或更高版本 * 安装所需的软件包: * Debian/Ubuntu: * 基础要求:`libegl1-mesa-dev libgl1-mesa-dev libopus-dev libsdl2-dev libsdl2-ttf-dev libssl-dev libavcodec-dev libavformat-dev libswscale-dev libva-dev libvdpau-dev libxkbcommon-dev wayland-protocols libdrm-dev` * Qt 6(推荐):`qt6-base-dev qt6-declarative-dev libqt6svg6-dev qt6-wayland qml6-module-qtquick-controls qml6-module-qtquick-templates qml6-module-qtquick-layouts qml6-module-qtqml-workerscript qml6-module-qtquick-window qml6-module-qtquick` * Qt 5:`qtbase5-dev qt5-qmake qtdeclarative5-dev qtquickcontrols2-5-dev qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qtquick-window2 qml-module-qtquick2 qtwayland5` * RedHat/Fedora(需要 RPM Fusion 仓库): * 基础要求:`openssl-devel SDL2-devel SDL2_ttf-devel ffmpeg-devel libva-devel libvdpau-devel opus-devel pulseaudio-libs-devel alsa-lib-devel libdrm-devel` * Qt 6(推荐):`qt6-qtsvg-devel qt6-qtdeclarative-devel` * Qt 5:`qt5-qtsvg-devel qt5-qtquickcontrols2-devel` * 构建 Vulkan 渲染器需要至少 v7.349.0 版本的 `libplacebo-dev`/`libplacebo-devel` 以及 FFmpeg 6.1 或更高版本。 ### Steam Link 构建要求 * 在您的构建系统上克隆 [Steam Link SDK](https://github.com/ValveSoftware/steamlink-sdk) * 将 STEAMLINK_SDK_PATH 环境变量设置为 Steam Link SDK 路径 **Steam Link 硬件限制** 针对 Steam Link 的 Moonlight 构建受到 Steam Link 设备硬件限制的约束: * 最大分辨率:**1080p (1920x1080)** * 最大帧率:**60 FPS** * 最大视频比特率:**40 Mbps** * 原始硬件上**不支持 HDR 流传输** ### Docker 容器 如果您想使用 Docker 进行构建,请查看[此仓库](https://github.com/cgutman/moonlight-packaging),其中包含适用于不同架构的规范容器, 这些容器会为您处理构建依赖项和额外的链接工作。 ### 构建设置步骤 1. 从 https://www.qt.io/download 安装最新的 Qt SDK(以及可选的 Qt Creator IDE) * 您可以在 macOS 上通过 Homebrew 安装 Qt,但您需要使用 `brew install qt --with-debug` 才能创建 Moonlight 的调试构建。 * 只要软件包版本为 Qt 5.12 或更高,您也可以使用 Linux 发行版的包管理器来安装 Qt SDK。 * 在 Steam Link 上构建不需要此步骤,因为 Steam Link SDK 包含 Qt 5.14。 2. 在 `moonlight-qt/` 目录中运行 `git submodule update --init --recursive` 3. 在 Qt Creator 中打开项目或在命令行中使用 qmake 进行构建。 * 要构建用于非开发机器的二进制文件,请使用 `scripts` 文件夹中的脚本。 * 对于 Windows 构建,使用 `scripts\build-arch.bat` 和 `scripts\generate-bundle.bat`。在 Qt 命令提示符中,从仓库根目录执行这些脚本。确保 7-Zip 二进制文件目录位于您的 `%PATH%` 中。 * 对于 macOS 构建,使用 `scripts/generate-dmg.sh`。从仓库根目录执行此脚本,并确保 Qt 的 `bin` 文件夹位于您的 `$PATH` 中。 * 对于 Steam Link 构建,从仓库根目录运行 `scripts/build-steamlink-app.sh`。 * 要在 macOS 或 Linux 上从命令行构建以进行开发使用,运行 `qmake6 moonlight-qt.pro`,然后运行 `make debug` 或 `make release`。 * 最终的二进制文件将放置在 `app/moonlight` 中。 * 要为单一用途设备创建嵌入式构建,使用 `qmake6 "CONFIG+=embedded" moonlight-qt.pro` 并正常构建。 * 此构建将缺少窗口模式、Discord/帮助链接以及在嵌入式设备上不适用的其他功能。 * 对于 GPU 性能较差的平台,添加 `"CONFIG+=gpuslow"` 以优先使用直接 KMSDRM 渲染,而不是 GL/Vulkan 渲染器。直接 KMSDRM 渲染可以使用专用的 YUV/RGB 转换和缩放硬件,而不是使用较慢的 GPU 着色器来执行这些操作。 ## 贡献 1. Fork 本项目 2. 编写代码 3. 发送 Pull Request 查看我们的[网站](https://moonlight-stream.org)以获取项目链接和信息。
标签:AV1, FFmpeg, H.264, HDR, HEVC, Moonlight, NVIDIA GameStream, Steam Link, Sunshine, Vectored Exception Handling, 云游戏, 低延迟, 多声道音频, 安全测试工具, 游戏串流, 游戏手柄支持, 硬件加速, 视频解码, 跨平台客户端, 远程控制, 远程桌面