nurdism / neko

A self hosted virtual browser (rabb.it clone) that runs in docker.
Apache License 2.0
2.03k stars 186 forks source link

[FEATURE] 2160p (4K) Support? #118

Open mog3n opened 3 years ago

mog3n commented 3 years ago
Screen Shot 2021-01-29 at 3 37 00 PM

This is what my docker compose looks like. However I can't seem to get it to render at 2160p. It seems to max out at 1080p@30.

I am using a sufficiently powerful VM. I'm using an 8 core with 16gigs of ram on AWS. This is mostly for movie nights so a buck or two per stream is not a huge problem.

Thanks!

m1k1o commented 3 years ago

Available screen resolutions are limited there: https://github.com/nurdism/neko/blob/master/.docker/files/base/xorg.conf

You could be theoretically able to modify it and adding custom resolutions. Though I have never tested that.

nurdism commented 3 years ago

I don't recommend this, but it is doable... encoding and streaming a 4k stream would need a large amount of bandwidth and a very beefy CPU

mog3n commented 3 years ago

Got it, thank you! Another question. Is it possible to manually set the bitrate?

m1k1o commented 3 years ago

Not in any convenient way. Your only possibility is to replace existing gstreamer pipeline with your custom. It can be done via NEKO_VIDEO environment variable. In order to do that, knowledge about gstreamer and its pipelines is needed.

Kyrex commented 3 years ago

Got it, thank you! Another question. Is it possible to manually set the bitrate?

I would like to know more about this too. A 720p@30 stream isn't even possible on normal ADSL internet with give or take 15mb/s download speed. It's just a stuttery mess.

Just like rabb.it had it, an SD and HD button at the bottom would be perfect, I assume it would change between a lower and higher bitrate for one client, not affecting the other clients.

m1k1o commented 3 years ago

It could be posibble with making two pipelines. SD and HD, letting user to decide. But this would introduce even higher CPU usage on server. Even now it is pretty high.

Kyrex commented 3 years ago

A bit off-topic, but also kinda not since I want to experiment with the configs: Since I'm not familiar with docker at all, if I want to edit one of the files and/or configs, like the xorg.conf file you pointed out, how can I do that? I can't seem to find them

m1k1o commented 3 years ago

You are able to copy that file (either from inside of container using ˙docker cp neko:/etc/neko/xorg.conf xorg.conf˙ or from this repo) and then mount it as volume using -v "${PWD}/xorg.conf:/etc/neko/xorg.conf".

Or in docker-compose:

    volumes:
      - ./xorg.conf:/etc/neko/xorg.conf
JCBird1012 commented 3 years ago

When I was playing around with #107, I tried to bump it up to 4K in the xorg.conf and I'm pretty sure I got my modesets right but it didn't appear in the front end. I never troubleshooted why.

m1k1o commented 3 years ago

Maybe because frontend is showing only modelines with 30 or 60 fps, others are simply ignored. I was able to get decent 4k video (only on my localhost ofc.) ranging from 8fps to 20fps. Even tried 60fps 8K resolution but I didn't get smooth picure.