Jump to content


SysDVR 6.0

¿Quieres enterarte al momento de las nuevas descargas? Síguenos en Twitter, Mastodon o Threads!

SysDVR es una modulo experimental del sistema (sysmodule) para Switch que nos permite capturar el juego que se está ejecutando a un PC.

Existen dos versiones, una que hace el stream vía USB y otra que lo hace a través de la red (TCP). Por ahora no es posible usar las dos al mismo tiempo.

Usar mpv player es la opción más recomendada para capturar, así como cualquier otro reproductor que tenga soporte para stream h264 en raw vía tcp o stdin, aunque habría que configurarlo manualmente.

294524482-2fdef695-e96a-496b-a643-a099b957e910.png

Limitations

  • Video quality is fixed to 720p @ 30fps with h264 compression (hardware limit)
  • Audio quality is fixed to 16bit PCM @ 48kHz stereo. Not compressed
  • Only works on games that have video recording enabled (aka you can long-press the capture button to save a video)
  • Video and audio are two different streams, they're likely to desync as they require two different player instances. Vlc does support a secondary audio stream but i didn't manage to get it working properly.
  • Only captures game output. System UI, home menu and homebrews running as applet won't be captured
  • Video feed is not realtime, there will always be a minimum of ~1 second of delay.
  • Stream quality depends heavily on the environment, bad usb wires or low wifi signal can affect it significantly.
  • Stream quality is also affected by software configuration, more details at the bottom.
  • USB streaming is not available when docked
  • Requires firmware >= 6.0.0

Clearly with these limitations this sysmodule doesn't allow "remote play" and does not replace a capture card.

Usage

Setting up the sysmodule

The provided builds already contain the correct file structure, you should just be able to extract them to your sd card.
To remove the sysmodule just delete the atmosphere/titles/00FF0000A53BB665 folder from your sd card.
CFWs other than atmosphere should work but i won't provide support for them.

Network streaming

This is the easiest way to stream, In this mode the sysmodule is completely standalone, you should be able to play the video stream just by running mpv tcp://<switch ip address>:6666 --no-correct-pts --fps=30 and mpv tcp://<switch ip addr>:6667 --no-video --demuxer=rawaudio --demuxer-rawaudio-rate=48000 for audio.
When using network streaming it's not recommended to stream both audio and video at the same time as it may cause slowdowns. In general network streaming has more lag and delay compared to USB, it is worth the time to set it up, especially for gameplay recording.

USB streaming

To stream via usb you need the UsbStream program, it's built using dotnet core 3.0 and is compatible with linux as well.
First of all you should make sure your drivers are set up correctly (only the first time) :

Driver setup on windows

On windows you may get the device not found or unsupported driver errors or very bad performance on the stream, in this case you may have the wrong driver set up, download zadig and install the libusb-win32 driver for the "Nintendo Switch" device. This won't interfere with other application that communicate with the switch via usb as this sysmodule uses a different product id.

Driver setup on linux

On linux you may have errors about loading the libusb-1.0 library, this happens when the file name is different than the one expected by dotnet, you can make a symlink as described on the LibUsbDotNet repo:
sudo find / -name "libusb-1.0*.so*" and then

cd /lib/x86_64-linux-gnu
sudo ln -s libusb-1.0.so.0 libusb-1.0.so

(Example commands, change the paths with the one you find on your pc)

Streaming

UsbStream supports three streaming modes:

  • mpv or stdin : pipes the received data directly to a video player via stdin, this will use no caching so you'll have low delay but it may lag. Using mpv will automatically add the needed configuration for mpv, stdin will require you to type the args to pass to the player
  • tcp : opens a tcp server so players can connect to it and use their own caching mechanism to remove or reduce lag (at the price of an higher delay)
  • file : writes the received data directly to a file so it can be converted to a common format later.

Launch UsbStream like this: UsbStream video <streaming mode> <arg> audio <streaming mode> <arg>
When using mpv the arg is the mpv executable (.com file on windows) path, you have to repeat it twice if using both streams.

The tcp option requires a free port number and the file option the output file path.

To disable a stream just omit the name and its fields.

Example commands:

UsbStream audio mpv C:/programs/mpv/mpv : Plays audio via mpv located at C:/programs/mpv/mpv, video is ignored
UsbStream video mpv ./mpv audio mpv ./mpv : Plays video and audio via mpv (path has to be specified twice)
UsbStream video tcp 1337 audio file C:/audio.raw : Streams video over port 1337 while saving audio to disk


Note that on windows you should use the mpv.com file and not mpv.exe, omitting the extension will automatically use the right one Launching UsbStream without any parameter will display more options and examples.
To connect to the tcp streams you can use: mpv tcp://localhost:<video port> --no-correct-pts --fps=30 for video and mpv tcp://localhost:<audio port> --no-video --demuxer=rawaudio --demuxer-rawaudio-rate=48000 for audio

Tips
To get the most out of this sysmodule you have to do a lot of testing to find the best configuration that works for you, here are some tips and answers to common issues :

  • If the video stream doesn't start immediately try moving the camera around in the game, to display something the video player needs to acquire a video keyframe first
  • If the stream is very poor try a different usb cable and driver with zadig, for network stream bring your console closer to the router, try using a lan adapter or windows' own hotspot mode.
  • An usb 3 wire is slightly better than usb 2, but both should work.
  • Quality also depends on the cpu utilization of the game you're running, OC can improve performances.
  • Using cache will reduce lags at the cost of an higher delay, for mpv it's on by default (except when using usb stream with mpv mode), if you want to try without it the command line arg for mpv is --cache=no --cache-secs=0. There's a lot of room for experimenting here, try different values to find the combination that works best for you.
  • If using no caching when the screen goes full black or white (eg loading screens) it may cause some desync and the stream will start to drop frames, eventually it will fix by itself but it could take some time, the fastest solution is to open the home menu for a few seconds and then resume the game, for usb stream you can try setting the --desync-fix flag (this will introduce glitches).

Known issues/TODOs

  • Memory usage is kept as low as possible (512K for usb ver, 3MB for network) but running this with many other sysmodules, or ones particulary heavy like sysftpd will not work or hang your console on boot.
  • The usb version stops working when launching another homebrew that requires usb access like nxmtp or goldleaf.
  • Implement a key combination to reinitialize usb when this happens (?)
  • Merge the usb and network stream versions and make an homebrew app to toggle between the two
  • Improve automatic desync detection and fix for UsbStream

Credits

  • Everyone from libnx and the people who reversed grc:d and wrote the service wrapper, mission2000 in particular for the suggestion on how to fix audio lag.
  • mtp-server-nx for their usb implementation

by exelix11.


Que novedades incluye la versión 6.0

Released

  • SysDVR Client ahora viene con una GUI multiplataforma completamente reescrita, no importa qué sistema operativo esté usando, obtendrá la nueva interfaz de usuario, ya no es necesario usar la línea de comando
    • Sin embargo, la interfaz de línea de comandos todavía está disponible y es mayoritariamente compatible con la sintaxis anterior. Tenga en cuenta que se eliminaron algunas funciones; puede ejecutar SysDVR-Client --help para ver los nuevos comandos.
  • El cliente SysDVR ya está disponible para Android
    • La versión de Android solo es compatible con Android 10 y versiones posteriores solo en dispositivos con una versión de Android de 64 bits. Esto limita la compatibilidad con televisores inteligentes y Chromecast más antiguos, pero es una limitación desafortunada de dotnet.
    • A partir de la versión 6.0, SysDVR Client solo se distribuye en esta página de GitHub, cualquier recarga en Play Store u otras tiendas no es oficial y no debes descargarlo.
  • La nueva GUI admite la captura de videoclips y capturas de pantalla en tiempo real.
  • Se introdujo soporte para el descubrimiento de redes locales.
    • El cliente puede detectar consolas en su red local y conectarse a ellas, ¡sin tener que escribir más direcciones IP!
    • El protocolo también está completamente documentado en este repositorio en caso de que desee crear su propio cliente.
  • SysDVR Client ahora está creado como una aplicación nativa, esto significa que simplemente funcionará™ sin necesidad de instalar dotnet.
    • A partir de esta actualización, deberá descargar la versión exacta para su sistema operativo y arquitectura de CPU.
    • Para arquitecturas que no se tratan aquí (sobre todo Raspberry Pi y Windows on Arm), puede descargar la compilación multiplataforma de estilo antiguo llamada SysDVR-Client-dotnet.7z y configurar dotnet 8 y las bibliotecas nativas necesarias por su cuenta; consulte el manual. sección de instalación de la guía.
  • Algunas funciones del cliente se eliminaron durante la reescritura; dependiendo de las solicitudes de los usuarios, es posible que se introduzcan en futuras actualizaciones; en particular, las siguientes funciones ya no están disponibles:
    • Transmitir a otros jugadores usando las opciones --stdout y --mpv
    • Retransmitir la transmisión con la opción --rtsp en el cliente. El servidor RTSP de la consola "Modo de red simple" todavía está disponible.
    • Grabación de video de línea de comando con la opción --file
  • Múltiples correcciones para errores reportados por los usuarios:
    • Se corrigió la grabación de video que no funciona en Linux.
    • El audio fijo no funciona en mac os.
    • Se agregó una opción de salida de audio alternativa para computadoras con Windows donde el audio no funciona

No te pierdas nada, síguenos en Twitter, Mastodon o Threads!
Preguntas, aportes y peticiones en el foro.

  • Contenido similar

    • Por Dekuwa
      MeloNX es un emulador de Nintendo Switch para iOS basado en Ryujinx, escrito principalmente en C#. Diseñado para ofrecer un rendimiento preciso y una interfaz fácil de usar para iOS, MeloNX hace que los juegos de Switch sean accesibles en dispositivos Apple.
      MeloNX funciona en iPhone XS/XR y posteriores y en iPad de 8.ª generación y posteriores.
      Preguntas frecuentes
      MeloNX está diseñado para iOS 17+, iOS 15 - 16 es compatible, pero tendrá problemas. MeloNX necesita Xcode o una cuenta de desarrollador de Apple paga. Es posible que pronto sea compatible con SideStore (problema con SideStore) MeloNX necesita JIT Dispositivo recomendado: iPhone 15 Pro o posterior. Dispositivo recomendado de gama baja**: iPhone 13 Pro. Dispositivo compatible más bajo: iPhone XR
    • Por Dekuwa
      Citron un emulador de Nintendo Switch diseñado para brindar una experiencia optimizada para jugar tus juegos favoritos y explorar otros nuevos. Citron es un emulador de alto rendimiento y fácil de usar, diseñado tanto para entusiastas como para desarrolladores.
      Descargo de responsabilidad: Citron está destinado estrictamente para uso legal de homebrew y no está afiliado ni respaldado por Nintendo. El uso de Citron para copias pirateadas o no autorizadas de juegos está estrictamente prohibido. Respeta a los desarrolladores de juegos y apóyalos comprando copias legítimas de sus juegos.

      Características principales
      Alto rendimiento: optimizado para la velocidad y una jugabilidad fluida. Fácil de usar: interfaz limpia e intuitiva. Multiplataforma: disponible en múltiples plataformas. Compatibilidad con homebrew: totalmente compatible con juegos y aplicaciones homebrew legales. Desarrollo continuo: ¡mantente atento a las actualizaciones frecuentes a medida que Citron evoluciona! Citron ha sido creado por Zephyron.
    • Por Dekuwa
      Switchroot LineageOS Downloader es una aplicación liviana para Windows diseñada para simplificar el proceso de descarga y organización de compilaciones de LineageOS para Nintendo Switch (Switchroot).
      Ya sea que esté configurando LineageOS para la variante de tableta o TV, esta herramienta automatiza el proceso de descarga, verifica la integridad de los archivos mediante sumas de verificación SHA-256 y organiza los archivos en la estructura de carpetas correcta para una fácil instalación.

      Características
      GUI fácil de usar: una interfaz limpia e intuitiva para una navegación perfecta. Tema oscuro: un tema oscuro moderno para un uso cómodo. Estructura de carpetas automática: crea las carpetas necesarias (switchroot, bootloader, etc.) y genera el archivo android.ini requerido. Descargas multiproceso: descarga varios archivos simultáneamente para un rendimiento más rápido. Verificación de suma de verificación: garantiza la integridad de los archivos verificando las sumas de verificación SHA-256 de los archivos descargados. Descargas reanudables: admite la reanudación de descargas interrumpidas, lo que ahorra tiempo y ancho de banda. Seguimiento del progreso: actualizaciones del progreso en tiempo real con una barra de progreso y estadísticas de descarga detalladas. Manejo de errores: reintenta las descargas fallidas automáticamente y registra los errores para solucionar problemas. Directorio de descarga personalizable: los usuarios pueden seleccionar una carpeta de descarga personalizada. Portátil: no requiere instalación; solo descargue el EXE y ejecútelo.
    • Por Dekuwa
      Sphaira es una alternativa a hbmenu. Actualmente tiene las mismas funciones que hbmenu (es decir, lanza homebrew + nxlink) y al mismo tiempo agrega algunas funciones.

      HomeBrew
      La pestaña del menú principal, que enumera todos los .nro que se encuentran en "/switch/". Desde allí, puede iniciar, ordenar, eliminar, crear un reenvío, etc.
      Puede navegar a las otras pestañas del menú utilizando "L" y "R", como se explica a continuación.
      Explorador de archivos
      Al presionar "L" desde el menú principal, puede acceder al explorador de archivos. Puede cortar, copiar, eliminar, cambiar el nombre, etc.
      Puede seleccionar varios archivos / carpetas utilizando el botón "ZR" y luego ver las funciones anteriores de ese grupo de archivos.
      Se pueden crear reenvíos si el archivo seleccionado tiene un archivo asociado, consulte a continuación para obtener más detalles.
      Tienda de aplicaciones
      sphaira cuenta con una tienda de aplicaciones, que utiliza la API de https://hb-app.store/switch. Se puede navegar a ella presionando "R" desde el menú principal.
      La tienda de aplicaciones tiene las mismas características que la aplicación hb-appstore, y además instala los manifiestos en la misma carpeta que hb-appstore para no romper la compatibilidad entre ambas.
      Temas
      Sphaira viene con 3 temas: abyss (predeterminado), blanco y negro (sin terminar).
      Se pueden agregar temas personalizados a "/config/sphaira/themes/", aquí está el tema abyss como ejemplo:
      [meta] name=Abyss author=TotalJustice version=1.0.0 ; unused currently preview=romfs:/theme/preview.jpg [theme] background=0x0f111aff grid=0x0f115c30 selected=0x0f115cff selected_overlay=0x529cffff text=0xffbc41ff text_selected=0x529cffff icon_audio=romfs:/theme/icon_audio.png icon_video=romfs:/theme/icon_video.png icon_image=romfs:/theme/icon_image.png icon_file=romfs:/theme/icon_file.png icon_folder=romfs:/theme/icon_folder.png icon_zip=romfs:/theme/icon_zip.png icon_nro=romfs:/theme/icon_nro.png Se puede agregar música a un tema, siempre que la música se convierta al formato bfstm. Simplemente agregue una entrada como esta: `music=/config/sphaira/themes/music/bgmusic_pcm.bfstm`
      Forwaders
      sphaira puede crear e instalar reenviadores para cualquier .nro. Utilizará el ícono del .nro y el nombre + autor.
      También puede instalar reenviadores para archivos que tienen un archivo asociado. Por ejemplo, si mgba está instalado y un juego se encuentra en "/roms/gba/game.gba", aparecerá la opción "Instalar reenviador". En este caso, intentará extraer el ícono del juego; de lo contrario, utilizará el ícono del .nro y el nombre será una combinación del nombre del .nro y el nombre del juego.
      File Assoc
      file assoc es una forma de asociar extensiones de archivo (.gba, .nro, etc.) con una aplicación homebrew. Por ejemplo, si haces clic en rom.gbc que tiene un archivo assoc, aparecerá una lista de todas las aplicaciones que pueden manejarlo.
      Esto se puede usar para emuladores, reproductores multimedia, editores de texto, etc.
      El archivo personalizado assoc debe ir en la carpeta "/config/sphaira/assoc/"
      El formato es *muy* simple, aquí hay un ejemplo de vgedit.ini:
      [config] supported_extensions=txt|json|cfg|ini|md|log Y otra vez para mgba.ini:
      [config] supported_extensions=gba|gbc|sgb|gb database=Nintendo - Game Boy|Nintendo - Game Boy Color|Nintendo - Game Boy Advance "path": (opcional) ruta completa al .nro. Si no se especifica, se utiliza el nombre del ini, es decir, mgba.ini utilizará mgba.nro.
      "supported_extensions": lista de extensiones que admite la aplicación, separadas por |. plea
      "database": (opcional) nombre de la base de datos de rom a utilizar definida por el lado izquierdo de esta tabla <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>..
      Todos los núcleos de retroarch tienen la asociación de archivos integrada en sphaira, por lo que si descarga retroarch usando la tienda de aplicaciones y luego navega a "/roms/gbc/game.gbc", gambatte y mgba estarán disponibles para ser seleccionados.
      Los juegos se pueden guardar en formato .zip, sphaira buscará en el .zip y encontrará la extensión real y la usará para mostrar íconos/archivos asociados.
      ROMs
      Las ROMs se deben colocar en "/roms/system_name/" donde el nombre del sistema se define en las entradas del lado derecho de esta tabla <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>.
      Este es el mismo diseño que usa Emulation Station. La razón por la que se obliga a que las ROMs estén en carpetas específicas se debe a que muchas ROMs para diferentes sistemas usan la misma extensión de archivo, es decir, .bin / .cue o .chd.
      Se permiten las ROMs ubicadas en subcarpetas, por ejemplo, "/roms/psx/scooby-doo/scooby-doo.bin" es válido.
      Themezer
      Se pueden buscar y descargar temas yendo a Opciones de menú -> Varios -> Themezer. Los temas se descargarán en "/themes/sphaira/Nombre del tema - Por autor/".
      Para instalar temas, inicia "NXThemes Installer" y busca la carpeta seleccionada que aparece arriba.
      Irs
      Sensor infrarrojo. Es una aplicación de juguete que hice hace 4 (?) años donde muestra la salida del irs del joycon, úsalo para tomarte una selfie 🙂
      Web
      Inicia el navegador web integrado, no es muy bueno.
      Nxlink
      Para los desarrolladores de homebrew, nxlink está integrado en sphaira. No tienes que presionar ningún botón especial, solo haz "nxlink *.nro" y envía tu nro como siempre, el registro de la consola funciona usando "nxlink -s *.nro"
      De manera predeterminada, esto está habilitado en segundo plano, para deshabilitarlo: Opciones de menú -> Red -> Nxlink.
      Sphaira ha sido creado por ITotalJustice.
    • Por Dekuwa
      FTPD es un servidor FTP para Switch (aquí está la versión para Nintendo 3DS).
      Características
      Parece funcionar bien con una variedad de clientes. Admite varios clientes simultáneos. La 3DS solo parece admitir suficientes sockets para realizar entre 4 y 5 transferencias de datos simultáneas, por lo que será útil limitar el cliente FTP a esta cantidad de solicitudes paralelas. Gráficos de vanguardia. Comandos soportados
      ABOR ALLO (no-op) APPE CDUP CWD DELE FEAT HELP LIST MDTM MKD MLSD MLST MODE (no-op) NLST NOOP OPTS PASS (no-op) PASV PORT PWD QUIT REST RETR RMD RNFR RNTO SIZE STAT STOR STRU (no-op) SYST TYPE (no-op) USER (no-op) XCUP XCWD XMKD XPWD XRMD FTPD ha sido creado por mtheall.
×
×
  • Crear nuevo...