Streaming
La consola de Hyper-V solo muestra la pantalla básica de Hyper-V, no lo que dibuja la GPU. Para ver la VM con la GPU, GpuVM instala un servidor de streaming dentro de la VM y la abre con un cliente en el host.
Componentes
Sección titulada «Componentes»| Componente | Dónde | Función | Versión fijada |
|---|---|---|---|
| Sunshine | VM | Captura la pantalla virtual y codifica con NVENC. | v2026.914.233613 |
| Virtual Display Driver | VM | Un monitor que dibuja la GPU. | 25.7.23 |
| nefcon | VM | Instalador de drivers por línea de comandos; crea el dispositivo de la pantalla virtual. | v1.14.0 |
| VB-CABLE | VM | Cable de audio virtual que captura Sunshine. | Pack45 (3.3.1.7) |
| Moonlight | Host | Muestra la VM. | Se instala aparte |
Los instaladores se descargan en el host al crear la VM, se verifican con el SHA-256 fijado en streaming/components.json y se copian al disco de la VM. El invitado no descarga nada. Se guardan en una carpeta cache (dentro de %ProgramData%\GpuVM con la app instalada).
nefcon está fijado en v1.14.0, la versión que usa el script oficial de instalación del VDD, aunque ya existe la v1.21.0.
Sunshine
Sección titulada «Sunshine»Sunshine corre dentro de la VM. Su usuario y contraseña se generan al crear la VM; en el host quedan cifrados con DPAPI. La contraseña viaja en texto plano al invitado solo para la instalación y después se borra.
Cada vez que haces Encender y abrir, GpuVM lee la lista de pantallas de Sunshine por su API, pone output_name en la pantalla virtual y dd_configuration_option en ensure_only_display, y reinicia Sunshine si eso cambió. Así evita que capture por error la pantalla de Hyper-V.
Pantalla virtual
Sección titulada «Pantalla virtual»El Virtual Display Driver agrega un monitor que dibuja la GPU. Se instala con nefcon y solo se confía en el certificado que firmó el driver.
- Después del primer inicio la VM se reinicia una vez sola para terminar de registrar la pantalla virtual y el audio.
- Si la pantalla virtual funciona, se desactiva la pantalla de Hyper-V para que Windows y Sunshine usen la virtual (
disableHyperVVideoen el perfil). - Si algo falla, la VM sigue accesible por Escritorio remoto.
Moonlight
Sección titulada «Moonlight»Moonlight en el host muestra la VM. El emparejamiento es automático: Moonlight genera el PIN y GpuVM se lo entrega a Sunshine por su API. El cliente emparejado lleva el nombre de este equipo.
- Para volver a emparejar: Volver a emparejar Moonlight en el menú de la app, o
./gpuvm.ps1 connect -Name <vm> -Pair. - La resolución y los FPS se eligen en las Opciones de la app, o en cada conexión:
./gpuvm.ps1 connect -Name win11 -Resolution 2560x1440 -Fps 120 -BitrateKbps 40000 -Codec HEVCCodecs: auto, H.264, HEVC, AV1. Por defecto Moonlight abre la app Desktop de Sunshine.
Audio con VB-CABLE
Sección titulada «Audio con VB-CABLE»Las VMs de generación 2 de Hyper-V no tienen tarjeta de sonido, así que GpuVM instala VB-CABLE, un cable de audio virtual cuyo driver tiene firma WHQL de Microsoft (sin aviso de Windows), y Sunshine captura su salida (virtual_sink).
- La instalación es silenciosa, como permite su licencia de distribución, siempre que se acredite el origen y el usuario pueda donar.
- El paquete original queda en
C:\GpuVM\VB-CABLEdentro de la VM, con un archivoLEEME.txt. virtual_sinklo configura la VM después de su reinicio automático, y se vuelve a revisar en cada Encender y abrir si la contraseña de Windows de la VM está guardada. La salida del cable se busca por tipo de dispositivo y no por nombre, porque Windows lo traduce (CABLE Inputen inglés,Altavocesen español).
Ajustes del perfil
Sección titulada «Ajustes del perfil»La sección streaming del perfil define los valores por defecto:
"streaming": { "provider": "sunshine", // o "none" para crear la VM sin streaming "virtualDisplay": true, "disableHyperVVideo": true, "audio": "vbcable", // o "none" para no instalar audio "sunshine": { }, // claves extra para sunshine.conf "client": { "app": "Desktop", "resolution": "1920x1080", "fps": 60, "bitrateKbps": 0, "codec": "auto" }}client también acepta vsync, framePacing, performanceOverlay (true/false) y displayMode (fullscreen, windowed, borderless). Solo se le pasan a Moonlight si el perfil los define.
Actualizar componentes
Sección titulada «Actualizar componentes»./gpuvm.ps1 components-update -WhatIf # ver si hay versiones nuevasBusca la última versión publicada en GitHub de cada componente y actualiza versión, URL y SHA-256 en streaming/components.json. VB-CABLE no se publica en GitHub y se actualiza a mano. Una versión nueva no está probada: valídala en un laboratorio antes de crear VMs con ella. La app no puede ejecutar este comando.