SysDVR - Stream gameplay directly to a pc

SysDVR
Stream/record gameplay to a PC via USB or network.
upload_2019-10-21_9-21-20.png

Update: Version 5.0 has been released with low latency streaming, be sure to check it out on github.

This is an experimental sysmodule that allows capturing the running game output on a pc.
As this uses switch's built-in game recording feature it has the same limitations: 720p@30fps and only works on the games that enable it, but by sending the video to another device there's no time limit to the recording.

There are two modes: USB and Network, both work fine but USB is slightly better, at least compared to wifi, didn't try with a LAN adapter.
Players like mpv or vlc can play the stream directly so you can use any screen recording applications but it's also possible to write the stream directly to a file.
To use the USB version you need the UsbStream program you'll find on the github page, it's built using .NET 5 and works on both windows and linux, haven't tried mac but in theory it should work too.

You can see it in action in the two teasers i posted while working on it:



As you can see it's not meant for remote play, but it can work as a basic capture card, audio output is uncompressed so it can be useful for ripping OSTs .

Download and wall of text guide on github: https://github.com/exelix11/SysDVR/
To get notified of updates you can follow this thread or join my new discord server (i also have a twitter account where occasionally post development updates).

Please make sure to read the full readme before reporting issues as it explains the most common problems you may encounter.
 
Last edited by exelix11,

exelix11

Developer
OP
Developer
Joined
Feb 25, 2015
Messages
915
Trophies
1
Location
C:\users\exelix11\
XP
3,062
Country
Italy
I have an issue with getting this to run. Whenever I attempt to connect with SysDVR, I get this error:

libusb: error [enumerate_hcd_root_hub] could not get child devinst for 'ROOT\USB\0000'
Device not found, did you configure the drivers properly ?

I've installed and reinstalled the 'libusb-win32 (v1.2.6.0)' driver in Zadig multiple times. The USB ID is '057E 3006' and the name of the device is called 'SysDVR (Nintendo Switch).
Had another user with this issue on discord a bit ago (assuming it wasn't you). No clue, seems to be caused by the hardware setup but didn't manage to fix it. Guess just to be safe you could try installing vc libs and rebooting but likely not going to help.

So in obs in media source you put the rtsp address in the input box?
Yes, also untick local file

I can't get ANY of the modes to work except for TCP. What am I doing wrong?
Do you get any error message ? Try checking open and closed issues on github
 

diesel701

Member
Newcomer
Joined
Mar 28, 2020
Messages
13
Trophies
0
Age
34
XP
112
Country
Italy
hi exelix11 and thanks for your great work.
It reminds me the work done by xerpi for the PsVIta with "vita-udcd-uvc" module

What if the module has an option to pass only video through the usb and get the audio from the jack instead? That would reduce the lag of the video maybe?
 
Last edited by diesel701,

exelix11

Developer
OP
Developer
Joined
Feb 25, 2015
Messages
915
Trophies
1
Location
C:\users\exelix11\
XP
3,062
Country
Italy
hi exelix11 and thanks for your great work.
It reminds me the work done by xerpi for the PsVIta with "vita-udcd-uvc" module

What if the module has an option to pass only video through the usb and get the audio from the jack instead? That would reduce the lag of the video maybe?
I'm actually looking into that approach rn. Don't know yet if it's possible as i'm still studying the implementation and USB standard but i'm definitely interested in implementing it.
 
  • Like
Reactions: diesel701

Waltee

Active Member
Newcomer
Joined
Nov 11, 2017
Messages
38
Trophies
0
Age
34
XP
348
Country
United Kingdom
I'm actually looking into that approach rn. Don't know yet if it's possible as i'm still studying the implementation and USB standard but i'm definitely interested in implementing it.

I know I've asked about this before, but I want to try and get multiple sysdvr working over the network and obviously need to change the port used.

Would this literally be a case of going through all the files in the master from github and just searching for "6666" and changing it to a different port number and rebuilding it, or is there more to it?
 

exelix11

Developer
OP
Developer
Joined
Feb 25, 2015
Messages
915
Trophies
1
Location
C:\users\exelix11\
XP
3,062
Country
Italy
I know I've asked about this before, but I want to try and get multiple sysdvr working over the network and obviously need to change the port used.

Would this literally be a case of going through all the files in the master from github and just searching for "6666" and changing it to a different port number and rebuilding it, or is there more to it?
Support for custom port is already in master, download client source and compile from visual studio. You may need to upgrade NLOG package from nuget in the RTSP project. the argument is "--port <port number>"
Don't compile the sysmodule, iirc it's broken in the latest commit.
 

Waltee

Active Member
Newcomer
Joined
Nov 11, 2017
Messages
38
Trophies
0
Age
34
XP
348
Country
United Kingdom
Support for custom port is already in master, download client source and compile from visual studio. You may need to upgrade NLOG package from nuget in the RTSP project. the argument is "--port <port number>"
Don't compile the sysmodule, iirc it's broken in the latest commit.

Ohhh, I'll look into it, thanks for the info!
 

Waltee

Active Member
Newcomer
Joined
Nov 11, 2017
Messages
38
Trophies
0
Age
34
XP
348
Country
United Kingdom
Support for custom port is already in master, download client source and compile from visual studio. You may need to upgrade NLOG package from nuget in the RTSP project. the argument is "--port <port number>"
Don't compile the sysmodule, iirc it's broken in the latest commit.

I'm not sure if I'm doing something horribly wrong (very likely) but I can't seem to get it to build for the life of me.
 

Dracari

Well-Known Member
Member
Joined
Apr 5, 2009
Messages
1,985
Trophies
1
XP
2,465
Country
United States
I'm actually looking into that approach rn. Don't know yet if it's possible as i'm still studying the implementation and USB standard but i'm definitely interested in implementing it.
unless homebrew right now can negotiate usb at 3.0 speeds, i doubt you will eliminate the lag this way on a USB 2.0 connection. (thats why many older usb cap. cards have such horrid preview lag.)

is some of the bottle neck also down to the switch clockspeed? if so what about running the switch in its Boost mode on the dock and if the USB3.0 port in it's back (the one between power & HDMI) could be an answer to get more bandwidth available.

again i maybe completely talking out my arse, and only know vauge experiences seeing what the streaming option on NTR-CFW on 3DS and RemoteJoy for PSP, can do/their limits.
 

exelix11

Developer
OP
Developer
Joined
Feb 25, 2015
Messages
915
Trophies
1
Location
C:\users\exelix11\
XP
3,062
Country
Italy
unless homebrew right now can negotiate usb at 3.0 speeds, i doubt you will eliminate the lag this way on a USB 2.0 connection. (thats why many older usb cap. cards have such horrid preview lag.)

is some of the bottle neck also down to the switch clockspeed? if so what about running the switch in its Boost mode on the dock and if the USB3.0 port in it's back (the one between power & HDMI) could be an answer to get more bandwidth available.

again i maybe completely talking out my arse, and only know vauge experiences seeing what the streaming option on NTR-CFW on 3DS and RemoteJoy for PSP, can do/their limits.
No that's not it, usb 2.0 has 400+ mbps speed, that's like 60MB/s, more than enough to stream h264 720p video, main problem is
compatibility of USB drivers, current usb implementation is not as good as it could be and i'm pretty sure it's what's adding most of the latency. In the last few days i've been working on it and now it breaks depending on the driver, that's bad cause i want to keep cross platform support. Interestingly TCPBridge (network mode) in good network conditions performs on par or even better than USB. Another major latency cause is audio syncronization (and RTSP shenanigans), i'm considering doing a low-latency mode for usb without audio emulating an usb camera and assuming that works it could be even real-time.
Some people already managed to make an almost realtime video with a specific version of VLC that allows tweaking cache settings and disabling audio, but this would solve the cross-platform issue and wouldn't need my custom client.

Is there a way to hook up the usb version to OBS?
Launch client in rtsp mode then connect to rtsp://127.0.0.1:6666/ in obs, it should work
 
Last edited by exelix11,
  • Like
Reactions: Crumpet_999

nintenbrolluseless

Active Member
Newcomer
Joined
Jan 5, 2020
Messages
41
Trophies
0
XP
199
Country
United States
When I try to connect through vlc it crashed and SysDVR spits out this error:
Connection from 127.0.0.1:50518
RTSP message received Rtsp.Messages.RtspRequestOptions
RTSP message received Rtsp.Messages.RtspRequestDescribe
Request for rtsp://127.0.0.1:6666/
RTSP message received Rtsp.Messages.RtspRequestSetup
RTSP message received Rtsp.Messages.RtspRequestSetup
RTSP message received Rtsp.Messages.RtspRequestPlay
[Video] Error writing to listener 127.0.0.1:50518
[Video] Removing session 1 due to write error
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Mondooooo @ Mondooooo: im fucking motivated