Git Product home page Git Product logo

kaukosohva's Introduction

kaukosohva

Play games remotely with Linux.

Current state

This is proof of concept prototype for technical users.

Architecture

Architecture

Main problems TODO

  • Lower the latency for streaming
    • Minimize streaming buffer(s)
    • Tune h264 parameters for lowest latency
    • Tune RTP parameters for lowest latency
    • Constant or variable bitrate (CBR or VBR)?

FAQ

See

  • host directory for how to host a game
  • remote-player directory for how to connect to a host as a remote player

Research

Not tested yet

If h264 over RTP multicast doesn't pan out there's still many things to try with GStreamer:

  • Drop multicast and stream to UDP port in a remote player's machine (this limits player count)
  • Try h264 inside MPEG-TS container over multicast
  • Try GStreamer's RTSP server if the host doesn't have enough upload bandwidth for all players there's RTSP proxies like rtsp-simple-server
  • RTMP
  • SRT
  • and others

Tested, didn't work

  • ffmpeg, mpv, vlc
    • too many buffers
    • 1000-4000 ms+ latency even locally

kaukosohva's People

Contributors

7oxicshadow avatar raspi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kaukosohva's Issues

Consider adding a comment section in the sender-audio.sh on how to select a specific sound card...

Managed to get chance for another brief play around with this at the weekend.

At the moment the soundcard is set to:

ASOURCE="autoaudiosrc"

But this has the problem that it can select the wrong soundcard if you have more than one. (I have 1 soundcard for game audio and a usb sound card for microphone/voice audio when using discord)

In the end we used the following command to list the available cards:

pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2

and then changed the ASOURCE to the following:

ASOURCE="pulsesrc device=alsa_output.pci-0000_00_1f.3.analog-stereo.monitor"

I am not sure if this is the correct way of doing it but it did work so I am assuming it is :)

AMD hardware encoding/decoding

I don't currently own any AMD hardware so if someone figures out working hardware encoding/decoding parameters, it would be great.

Kaukosohva using wireguard over LAN gives bad performance. Caused by MTU?

During my testing over LAN if I specify my LAN adapter directly the streaming seems to work fine but if I use wireguard over my LAN I appeared to be getting many dropped frames on the client causing the screen to be grey a lot of the time...

After reading on the internet about wireguard and dropped packets I came across a post about wireguard and MTU. Someone with an unstable wireguard connection discovered that manually setting the MTU for the wireguard interface dramatically increased stability.

I can confirm (for me at least) that setting the HOST and CLIENT to MTU = 1500 on the wireguard interface fixed the issue for me and wireguard acts just the same as if i was using the real network interface over LAN.

I have not been able to test over an internet connection so I can not confirm if this is even an issue as I believe WAN traffic uses a lower MTU than LAN anyway but its worth posting here incase others are having similar issues.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.