Code Monkey home page Code Monkey logo

wrtcrd's Introduction

wrtcrd

Remote desktop server and client using Webrtc protocol.

WIP

This project is a work in progress and mainly used to have some fun programming and to expand horizons into different fields and topics but the end solution should have most of the todo list implemented.

Features

  • Cross platform server (windows, linux, darwin) and client (web) (tested only on darwin)
  • Multiple display support at full resolution
  • Audio output (Opus) 48KHz Mono
  • Mouse input (Left, right, middle buttons, scroll)
  • Keyboard input
  • Webrtc 60fps (x264)

TODO

  • Adjustable framerate
  • Adjustable frame down-scaling (Who needs to send FULL HD / 4k over wire?)
  • Look for performance/stability improvements
  • Add support for audio codecs AAC, Vorbis
  • Add support for video codecs VP8/9 and AV1
  • Logs
  • Authentication
  • Refactoring
  • TLS

How to set it up

This project is not really tested on other platforms than darwin using arm64 so a lot of things are a subject to change and might still not work as expected on other platforms so keep that in mind...

Well this is a bit weird... You need to install x264 and Opus codecs somehow (FFMPEG?). Depending on your platform things will be a bit different.

Darwin

It turns out that there is no simple way around CoreAudio to create a virtual audio output device so we could send audio out. Therefore you will have to install BlackHole and create multi-output device then set it up to output to your speakers/other device and blackhole. Then set input device to blackhole as well (microphone input). Now sound should work.

Install libportaudio using brew $ brew install portaudio

Then install the opus codec $ brew install pkg-config opus opusfile

That should be everything you need to run this.

Now install the dependencies and run this

$ GOOS=darwin GOARCH=<cpu architecture> CGO_ENABLED=1 go run main.go

Linux

Not tested so there's no installation steps

Windows

Not tested so there's no installation steps

wrtcrd's People

Contributors

kamilernerd avatar

Watchers

 avatar

wrtcrd's 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.