SysDVR è un nuovo modulo di sistema personalizzato per console Switch sviluppato dal developer exelix11, una volta installato il sysmodule ci permetterà di catturare l’output del gioco in esecuzione su di un PC Windows.
Sono disponibili due versioni, una per lo streaming via USB e una per lo streaming sulla rete (TCP). Attualmente non è possibile utilizzare entrambi contemporaneamente.
Si consiglia di utilizzare mpv player in quanto è il più semplice da configurare, qualsiasi altro player che supporti flussi h264 grezzi tramite tcp o stdin dovrebbe funzionare ma potrebbe essere necessario configurarlo manualmente.
Limitazioni
- La qualità video è fissata a 720p @ 30fps con compressione h264 (limite hardware).
- La qualità audio è fissata su stereo PCM a 16 bit a 48 kHz. Non compresso.
- Funziona solo su giochi con registrazione video abilitata (ad esempio puoi premere a lungo il pulsante di acquisizione per salvare un video).
- Il video e l’audio sono due flussi diversi, probabilmente si desincronizzano poiché richiedono due diverse istanze del lettore. VLC supporta un flusso audio secondario ma non sono riuscito a farlo funzionare correttamente.
- Cattura solo l’output di gioco. L’interfaccia utente del sistema, il menu principale e gli homebrew in esecuzione come applet non verranno acquisiti.
- Il feed video non è in tempo reale, ci sarà sempre un ritardo di almeno 1 secondo.
- La qualità del flusso dipende fortemente dall’ambiente, i cavi USB difettosi o il basso segnale wifi possono influire in modo significativo.
- La qualità del flusso è influenzata anche dalla configurazione del software, maggiori dettagli in fondo.
- Lo streaming USB non è disponibile quando collegato.
- Richiede firmware >= 6.0.0.
Chiaramente con queste limitazioni questo sistema non consente la “riproduzione remota” e non sostituisce una scheda di acquisizione.
Guida
Impostazione del sysmodule
- Le build fornite contengono già la struttura corretta dei file, dovreste essere in grado di estrarle sulla scheda SD.
- Per rimuovere il sysmodule è sufficiente eliminare la cartella
atmosphere/titles/00FF0000A53BB665
dalla scheda SD. - I Custom Firmware diversi da Atmosphere dovrebbero funzionare, ma non verrà fornito supporto per il loro utilizzo.
Streaming di rete
Questo è il modo più semplice per eseguire lo streaming, in questa modalità il sysmodule è completamente autonomo, dovreste essere in grado di riprodurre lo streaming video semplicemente eseguendo mpv tcp://<switch ip address>:6666 --no-correct-pts --fps=30
e mpv tcp://<switch ip addr>:6667 --no-video --demuxer=rawaudio --demuxer-rawaudio-rate=48000 per l'audio
.
Quando si utilizza lo streaming di rete, non è consigliabile eseguire lo streaming audio e video contemporaneamente poiché potrebbe causare rallentamenti. In generale lo streaming di rete ha più lag e ritardo rispetto al collegamento USB, vale la pena installarlo, specialmente per la registrazione del gameplay.
Streaming USB
Per lo streaming via USB è necessario il programma UsbStream, è stato realizzato utilizzando dotnet core 3.0 ed è compatibile anche con Linux.
Prima di tutto dovreste assicurarvi di aver installato e impostato correttamente tutti i driver (solo la prima volta):
Configurazione del driver su Windows
Su Windows potreste non riuscire a trovare il dispositivo o visualizzare errori per driver non supportati o prestazioni pessime sullo stream, in questo caso probabilmente avete impostato il driver sbagliato. In tal caso scaricare zadig e installare il driver libusb-win32 per il dispositivo “Nintendo Switch”.
Ciò non andrà ad interferire con altre applicazioni che comunicano con la console Switch tramite USB poiché questo sistema utilizza un ID prodotto diverso.
Configurazione del driver su Linux
Su Linux potreste incorrere in errori nel caricamento della libreria libusb-1.0, questo accade quando il nome del file è diverso da quello previsto da dotnet, in tal caso basta creare un collegamento simbolico come descritto nella repository LibUsbDotNet:
sudo find / -name "libusb-1.0*.so*"
e poi
cd /lib/x86_64-linux-gnu
sudo ln -s libusb-1.0.so.0 libusb-1.0.so
(Esempio di comandi, cambia i percorsi con quello che trovi sul tuo PC)
Streaming
UsbStream supporta tre diverse modalità di streaming:
mpv
ostdin
: Reindirizza i dati ricevuti direttamente a un lettore video tramite stdin, questo non utilizzerà la memorizzazione nella cache, quindi potresti riscontrare un ritardo basso. L’utilizzo dimpv
aggiungerà automaticamente la configurazione necessaria per mpv,stdin
richiederà di digitare gli arg per passare al player.tcp:
Apre un server tcp in modo che i player possano connettersi ad esso e utilizzare il proprio meccanismo di memorizzazione nella cache per rimuovere o ridurre il ritardo (al prezzo di un ritardo maggiore).file:
Scrive i dati ricevuti direttamente in un file in modo che possano essere convertiti in un formato comune in un secondo momento.
Avviare UsbStream in questo modo: UsbStream video <streaming mode> <arg> audio <streaming mode> <arg>
Quando si utilizza mpv
arg è il percorso eseguibile mpv (file .com su windows), è necessario ripeterlo due volte se si utilizzano entrambi i flussi.
L’opzione tcp
richiede un numero di porta libero e l’opzione file il percorso del file di output. Per disabilitare uno stream basta omettere il nome e i suoi campi.
Comandi di esempio:
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
Nota che su Windows dovreste utilizzare il file mpv.com
e non mpv.exe
, omettendo l’estensione verrà utilizzata automaticamente quella giusta, lanciando UsbStream senza alcun parametro mostrerà più opzioni ed esempi.
Per connettersi ai flussi tcp è possibile utilizzare: mpv tcp://localhost:<porta video> --no-correct-pts --fps = 30
per video e mpv tcp://localhost:<porta audio> --no -video --demuxer=rawaudio --demuxer-rawaudio-rate=48000
per l’audio.
Suggerimenti
- Per ottenere il massimo da questo sistema dovrete eseguire molti test per trovare la migliore configurazione, ecco alcuni suggerimenti e risposte ai problemi più comuni:
- Se il flusso video non si avvia immediatamente, provare a spostare la videocamera durante il gioco, per visualizzare qualcosa di cui il lettore video deve acquisire prima un fotogramma chiave video.
- Se lo streaming è molto scarso provare un cavo USB e un driver diverso con zadig, poiché lo streaming di rete avvicina la console al router, provare a utilizzare un adattatore lan o la modalità hotspot di Windows.
- Un cavo USB 3 è leggermente migliore di USB 2, ma entrambi dovrebbero funzionare.
- La qualità dipende anche dall’utilizzo della CPU del gioco in esecuzione, OC può migliorare le prestazioni.
- L’utilizzo della cache ridurrà i lag al costo di un ritardo maggiore, per mpv è attivo di default (tranne quando si utilizza lo streaming usb con la modalità
mpv
), se si desidera provare senza di essa l’argomento della riga di comando per mpv è--cache=no - -cache-sec=0
. Qui c’è molto spazio per sperimentare, provare diversi valori per trovare la combinazione migliore. - Se non si utilizza la memorizzazione nella cache quando lo schermo diventa completamente bianco o nero (ad esempio durante il caricamento delle schermate) potrebbe causare una certa desincronizzazione e lo stream inizierà a rilasciare i fotogrammi, alla fine si risolverà da solo ma potrebbe richiedere del tempo, la soluzione più veloce è aprire il menu home per alcuni secondi e poi riprendere il gioco, per lo streaming usb puoi provare a impostare il flag
--desync-fix
(questo introdurrà glitch).
Problemi noti/Prossimamente
- L’utilizzo della memoria è ridotto al minimo (512 KB per USB ver, 3 MB per la rete), ma eseguendolo con molti altri sistemi, o quelli particolarmente pesanti come Sysftpd non funzioneranno o bloccheranno la console all’avvio.
- La versione usb smette di funzionare quando si avvia un altro homebrew che richiede l’accesso usb come nxmtp o goldleaf.
- Implementare una combinazione di chiavi per reinizializzare USB quando ciò accade (?).
- Unire le versioni usb e streaming di rete e creare un’app homebrew per passare da una all’altra.
- Migliorare il rilevamento e la correzione automatica della desincronizzazione per UsbStream.
Crediti
- Tutti da libnx e le persone che hanno invertito grc:d e scritto il service wrapper, mission2000 in particolare per il suggerimento su come correggere il ritardo audio.
- mtp-server-nx per la loro implementazione usb.
[stextbox id=’info’]Nota: UsbStream richiede l’utilizzo di .NET core 3.0.[/stextbox]
Download: Network
Download: USB
Download: UsbStream
Download: Source code SysDVR
Fonte: github.com