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 翻译成您的语言。
[](https://github.com/moonlight-stream/moonlight-qt/actions/workflows/build.yml?query=branch%3Amaster)
[](https://github.com/moonlight-stream/moonlight-qt/releases)
[](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, 云游戏, 低延迟, 多声道音频, 安全测试工具, 游戏串流, 游戏手柄支持, 硬件加速, 视频解码, 跨平台客户端, 远程控制, 远程桌面