Skip to content

moo-the-cow/moobs-studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

you might also wanna check out related projects:

(moobs-studio:1.5) Current OBS version:

30.0.0-beta1

Announcement:

Good news everyone! Because the lack of OBS running properly on boards like orange pi 5 or nvidia jetson I decided I will put more work into this, so I can at least run this in my VM. So expect changes that will improve thos docker images (it's a little buggy sometimes I know)

moobs-studio

Docker linux container for OBS Studio (nvidia GPU enabled) for cloud and selfhosting

the image will be around 4.5GB (1.48GB compressed - keep in mind that you will have a linux desktop available for your own convenience) and there are a lot of dependencies, so I cannot really shrink the size

This setup was tested on a windows machine using WSL (Ubuntu 20.04) and NVIDIA Cuda for docker activated 🚨

On a native linux environment NVIDIA HW acceleration is even easier to use

(have a look in the docker-compose yaml file comments)

For cloud setup I cannot post any hints, because I do not have any cloud setup and also this may be different depending which cloud environment you use. But you will defnitely need some NVIDIA GPU passed through for your container

You can access OBS-Studio via browser using novnc accessing your personal LXDE Desktop It comes with integrated Obs-Websocket for streaming have a look at another Projects of mine: streaming and moobs

Because this is specifically for streaming there will be a preset of scenes (especially the LIVE scene having the srt setup from my other project). Feel free to change the backgrounds for BRB etc.

if you are not a developer please contact a someone who's familiar with this, that person will know what to do

you pick yourself if you want to enable/disable the overlay so this gets promoted/spread, but I'd very much appreciate it (especially at the start of this project)

Requirements

  • Nvidia GTX 1070 or newer
  • cuda 12.0 or newer
  • proprietary nvidia driver installed
  • docker nvidia runtime

update

I created an image for older GPUs (maxwell family) tested for another person NVIDIA Geforce 980 TI (Maxwell) you can use the modified version moothecow/moobs-studio-oldercards:1.4

HINTS

if you have an older GPU check what's supported in OBS. in my case I had to set B-Frames from 2 to 0 because this card cannot do b-frames

currently there is a bug in nvidia driver 525, so the vaapi driver does not work. it makes the OBS UI using more CPU, but nvenc h264/hevc de/encoding works and we are using vdpau anyways

the image is fairly big (around 7GB) but it cannot be helped because after all it provides a full linux desktop and the cuda runtime

WSL2 is the best way to do it, because of the hardware rendering. ironically microsofts versions works better than the native linux

Changelog

  • updated OBS to version 29.1.0 (git main branch)
  • MAJOR UPDATE of Ubuntu from 20.04 to 22.0
  • added cuda into container, so you don't need to install it on the host
  • it will run in WSL2 and on native LINUX now. make sure to edit the docker-compose.yml accordingly so that you don't use WSL2 settings for native linux it still requires you to have the nvidia docker runtime activated (both)

maybe I will add AMD later

r600, radeonsi, nouveau, i965, virtio_gpu, d3d12, iHD

in your docker-compose please note relevant parts like

LIBVA_DRIVER_NAME=[one of the above]

You will need this one to render the OBS QT6 Tool efficiently otherwise it will consume a lot of CPU

optional: pass through /dev/dri/renderD128 for vaapi

however: HEVC is not supported in VAAPI. so NVIDIA is the most attractive choice of GPU so you can use NVENC

HOWTO

You can access the Desktop via Browser url: http://[hostip]:6080/ if you want to access another port just modify the ports in your docker-compose yaml file.

SETUP

just because I have documented how to use docker-compose yaml files I will just quickly post an example:

download all the files into a directory and start it via

docker-compose -f docker-compose.yml up -d

for native linux use the one with -linux.yaml suffix

I recommend you add the docker compose services from https://github.com/moo-the-cow/moobs and https://github.com/moo-the-cow/streaming (streaming folder) into your docker-compose yaml file for the ultimate streaming experience (communicating within their docker subnet). Those services are well documented on those linked pages.

Otherwise you will have to re-configure your Scene and use the url for your own SRT server and also the reconfigure html file showing the bitrate

Audio (WSL2)

you need to have WSLG and WSL installed (see volume mappings)

Common Issues

  • I cannot see my stream souce: Check your SRTLA url in the LIVE scene. IP and streamkey must match your SRT endpoint
  • My Websocket connection isn't working: By default websocket is disabled, enable it via checkbox and check the IP and password match the settings of the tool you're connecting from.
  • HEVC for recording doesn't work: Currently recording in HEVC only for windows is supported

additional words

sorry I haven't created a wiki page yet, there is actually a lot more to document, but I just wanted to release, because it was working for quite a while on my end already. if you have any questions or issues just create a ticket, and IF I can solve it and IF I have time I will get to it.

I'm very curious about your experience with this in a cloud, please let me know if you want to share!

Screenshots:

image image image

About

Docker linux container (nvidia GPU enabled) for cloud and selfhosting

Resources

License

Stars

Watchers

Forks

Packages

No packages published