Home Modding Rilasciato Switch-Streaming v2.0.0

[Scena Switch] Rilasciato Switch-Streaming v2.0.0

387
0

Switch-Streaming è una tra le più valide alternative a SysDVR, il proof of concept permette di eseguire la riproduzione remota di una console Switch tramite il browser web del PC.

Il server viene collegato tramite una scheda di acquisizione alla porta HDMI (video/audio) della console Switch e restituisce l’immagine ad un browser remoto tramite WebRTC, ottenendo una latenza di 200-300 ms.

Gli input del gamepad vengono letti dal browser remoto e inviati al server, che traduce gli input e utilizza due Arduino Micros per trasmettere e tradurre gli input in input del joystick allo Switch.

Uno degli Arduino Micros emula un HORI Pokken Tournament Pad e l’altro Arduino trasmette l’input a quell’Emulatore Arduino tramite la comunicazione I2C.

Requisiti hardware

  • Un computer che può funzionare come un server Linux. Ho questo in esecuzione in una macchina virtuale Ubuntu in unRAID.
  • Larghezza di banda decente per trasmettere il flusso. Alcune ricerche online suggeriscono che ~200kbps che possono essere dedicati a questo è una buona linea di base.
  • Scheda di acquisizione per acquisire video e audio. Ho usato un AVerMedia Live Gamer Mini.
  • Due dispositivi Arduino di cui almeno uno basato su ATmega32u4 (ho usato un Arduino Micro imitato).

Requisiti software (server)

Installazione rapida di tutte le dipendenze diverse da Go (Linux basato su Debian):

sudo apt-get update -y
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio coturn alsa-utils v4l-utils
  • Go 1.16 o successivo.
  • GStreamer con plugin: Prende il video e l’audio dalla scheda di acquisizione e utilizziamo WebRTC per trasmetterlo in streaming.
  • Server STUN e TURN: Vengono utilizzati per negoziare una connessione tra il browser remoto e la macchina locale in streaming video e audio. Se desideri connessioni sicure, dovresti utilizzare LetsEncrypt per acquisire un certificato SSL per questi server. Raccomando di usare coTURN, ma puoi usare le tue implementazioni se preferisci.
  • ALSA: fornisce funzionalità audio e MIDI al sistema operativo Linux.
  • V4L2: una raccolta di driver di dispositivo e un’API per supportare l’acquisizione video in tempo reale su sistemi Linux.

Setup

Arduinos

  1. Crea una configurazione della scheda nell’installazione di Arduino in hardware\arduino\avr\boards.txt e inserire quanto segue:

myboard.name=SwitchJoystick
myboard.vid.0=0x0F0D
myboard.pid.0=0x8092
myboard.vid.1=0x0F0D
myboard.pid.1=0x0092

myboard.upload.tool=avrdude
myboard.upload.protocol=avr109
myboard.upload.maximum_size=28672
myboard.upload.maximum_data_size=2560
myboard.upload.speed=57600
myboard.upload.disable_flushing=true
myboard.upload.use_1200bps_touch=true
myboard.upload.wait_for_upload_port=true

myboard.bootloader.tool=avrdude
myboard.bootloader.low_fuses=0xff
myboard.bootloader.high_fuses=0xd8
myboard.bootloader.extended_fuses=0xcb
myboard.bootloader.file=caterina/Caterina-Leonardo.hex
myboard.bootloader.unlock_bits=0x3F
myboard.bootloader.lock_bits=0x2F

myboard.build.mcu=atmega32u4
myboard.build.f_cpu=16000000L
myboard.build.vid=0x0F0D
myboard.build.pid=0x0092
myboard.build.usb_product="POKKEN CONTROLLER"
myboard.build.board=AVR_LEONARDO
myboard.build.core=arduino
myboard.build.variant=leonardo
myboard.build.extra_flags={build.usb_flags}

  1. Aggiungere la libreria Switch Joystick specificata nella repository alle librerie Arduino.
  2. In Arduino IDE, scambiare il tipo di scheda con quello SwitchJoystick che abbiamo aggiunto sopra.
  3. Caricare switch-translator.ino su un Arduino con ATmega32u4.
  4. Sostituire il tipo di scheda con quello che è appropriato per l’altro Arduino.
  5. Caricare input-relè.ino su quell’Arduino.
  6. Configurare gli Arduino su una breadboard; collegare i pin SDA tra loro, i pin SCL tra loro e i pin di terra tra loro per impostare la comunicazione I2C.

Server

  1. Configurare il server coTURN. Io ho seguito questa guida.
  2. Aprire una porta nel router e nel server per la connessione WebSocket e assegnare quel numero in main.go come websocketPort.
  3. Collegare il relè dell’input Arduino al server Linux e collegare il traduttore Switch Arduino al dock Switch.
  4. Specificare l’indirizzo del dispositivo registrato in Linux (reperibile tramite dmesg); assegnare quel percorso in main.go come arduinoDevicePath.

Client

  • Assegnare il nome utente e le credenziali del server TURN in login-and-control.js, nonché l’IP del server che ospita la porta Switch Streaming e WebSocket aperta in precedenza.
  • Aggiungere i server STUN e TURN che hai nelle costanti STUN_SERVER e TURN_SERVER nello stesso file.

Runtime

  1. Accendere la Nintendo Switch e andare al menu principale.
  2. Eseguire go build && sudo ./switch_stream_server nella directory del server.
  3. Sul lato client, aprire index.html, inserire le credenziali necessarie, e inviare l’input alla Switch per ricevere audio/video da esso!

[stextbox id=’info’]Nota: Qualsiasi controller compatibile con l’API Mozilla GamePad funzionerà con il client![/stextbox]

Changelog

  • I file del server sono interamente in Go.
  • Ottimizzazioni lato server per una trasmissione di input più rapida.
  • Il server può essere di lunga durata.
  • Usa Arduino invece del Bluetooth per una maggiore affidabilità e una comunicazione più veloce.
  • Il client non dipende più da gamepad.js; ora utilizza l’API Web del GamePad.
  • Ottimizzazioni lato client per una più rapida trasmissione degli input.

Download: Source code Switch-Streaming v2.0.0

Fonte: github.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.