Jetson Nano OBS Live Streaming

Hello Guys! i have a proeject to make my jetson nano streams inside my race car using OBS, i was getting help from some members in other post but it was closed…

this is what they suggested for installing OBS

For OBS, you may be able to build R27.2 with the following:

#/!bin/sh

sudo apt install \
            build-essential \
            checkinstall \
            cmake \
            git \
            libmbedtls-dev \
            libasound2-dev \
            libavcodec-dev \
            libavdevice-dev \
            libavfilter-dev \
            libavformat-dev \
            libavutil-dev \
            libcurl4-openssl-dev \
            libfdk-aac-dev \
            libfontconfig-dev \
            libfreetype6-dev \
            libgl1-mesa-dev \
            libjack-jackd2-dev \
            libjansson-dev \
            libluajit-5.1-dev \
            libpulse-dev \
            libqt5x11extras5-dev \
            libqt5svg5-dev \
            libspeexdsp-dev \
            libswresample-dev \
            libswscale-dev \
            libudev-dev \
            libv4l-dev \
            libvlc-dev \
            libx11-dev \
            libx11-xcb-dev \
            libx264-dev \
            libxcb-randr0-dev \
            libxcb-shm0-dev \
            libxcb-xfixes0-dev \
            libxcb-xinerama0-dev \
            libxcb1-dev \
            libxcomposite-dev \
            libxinerama-dev \
            pkg-config \
            python3-dev \
            qtbase5-dev \
            swig

     
            
mkdir OBS; cd OBS

git clone --recursive https://github.com/obsproject/obs-studio.git
cd obs-studio/
git checkout release/27.2
git submodule update
cmake -S . -B ../build-R27.2-release -G Ninja -DUNIX_STRUCTURE=1 -DBUILD_BROWSER=OFF -DENABLE_PIPEWIRE=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/obs
cmake --build ../build-R27.2-release
sudo cmake --install ../build-R27.2-release
cd ../..

and then run it:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/obs/lib
/usr/local/obs/bin/obs

Problem is, that i am getting some errors, please check this terminal pic
thanks!

Hi,
This would need other users to share experience. For streaming, generally we run UDP and RTSP. You may take a look at
Jetson Nano FAQ

Q: Is there any example of running RTSP streaming?
Q: Is there an example for running UDP streaming?

my main idea was to connect 2 Go pros IN Car, and hook them up into the Jetson Nano, then connect the jetson nano to a modem and run OBS to stream both cams.

I managed to build and open the OBS!

only problem is that it only opens using terminal, writing OBS.

Is there a way to create a shortcut? Or have it open at startup?

I connected my first go pro using a CamLink and video showed up

The basic question is do you have the GUI up and running to a monitor or not? OBS Studio will only run if there is a GUI terminal running, and when you use OBS it needs to know where to display (which would be from an “export DISPLAY=:0”, or similar, with a different “:0” depending on the case). This won’t exist if you remote login unless you take steps. In terms of network bandwidth and behavior in general, if you don’t have a monitor running directly on the Jetson, then you’d be advised to install a virtual desktop. The software neither cares about, nor is aware of, whether that display is virtual versus physically there.

Someone else will need to provide steps for a virtual desktop, but I’ll advise from the start that if you are going to add this, that you should back up your current working system first. This way you won’t lose the GUI login if it does not work correctly. Having the content on an SD card is a nice start, but if it is your working copy, then a change which breaks it still means flashing again in most cases to fix whatever went wrong.

Do you have enough space on your PC to store a full copy of your SD card?

Ok, I will not run a Monitor, my main idea was to connect remotely via TeamViewer using and IPad, isn’t there a way to force start without Hdmi? Something inside the boot config file?

Nano will be inside my car, powered by an ON button, and as soon as it boots, I can connect with TeamViewer and just press “start streaming”

Everything will be setup already

I have more SD cards available, I can clone mine using a USB adapter and have that ready in case the other fails

What do you think?

I don’t know how well TeamViewer works on a Jetson, but if it does work, then it should be ok. You can start without HDMI if it is virtual, but the server has to be equipped (which TeamViewer is). With a real monitor it needs the monitor to respond to the DDC wire when queried. Virtual servers can do this without the DDC wire. It is an entire server added when you install a virtual desktop like TeamViewer. Without that there is no way for the X server to provide a context for graphics.

There are other virtual servers as well, but I don’t have recommendations. However, when you install a virtual server, if anything goes wrong, then the GUI won’t work until fixed (it could break both virtual and real display). For that I recommend backing up the system before doing this in case it does fail.

Ok, I will try to solve the monitor thing later, I first need to make the system work

How can I run OBS at startup? I have to manually open Terminal and write OBS to open it.

Also, the Cam Link capture on OBS is not being recognized every time OBS starts.

I also want to be able to use the Go Pro as a Webcam, with only a USB cable

Thanks for support!!!

I can’t answer much of that. However, for OBS to run, you need a login to a server, and typically that is an “Ubuntu” mechanism which won’t differ on a Jetson. Doing so in the GUI is shown here:
https://itsfoss.com/ubuntu-automatic-logon/

There are some other ways of doing this with file edits, but I don’t recall which file that is since I don’t use autologin.

The other part is that once a login occurs, there are also standard ways to autorun an application upon login. Assuming the autologin is to either a real X server with a display context, or a virtual server (such as TeamViewer) which also provides a context, then autologin plus autostart of OBS would do the job.

Auto login is up! TeamViewer also runs

I just need to find a way to run OBS also in the auto login, it uses the terminal, there is no Shortcut

Hi,
Please check if the links help:
Jetson Nano FAQ

Q: How to autorun an app or commands at startup?

Hello

i have already enabled the RC.Local file, but i dont know how to add the OBS to that file.

OBS starts when i enter terminal and execute OBS from there…

any script or thing i should do to execute this when system boots??

FYI, OBS uses the GUI. That means if no GUI is running it can’t run. If the GUI does run, but OBS is not told which GUI to use (which is what exporting the environment variable “DISPLAY” is for), then OBS will still fail to run (it won’t have a rendering context).

Is there a GUI running? If not, then you have to run the GUI first. This in turn means you need a user to log in. If there is a monitor, then you could set up auto login for a user, and set OBS as an auto run of that user login. If there is no monitor, then you’d have to create a virtual server, and auto login to that virtual server (a GUI X server creates a rendering context…it doesn’t matter to the software running whether that context is talking to a monitor, or if it is virtual and purely in software pretending to talk to a monitor).

If you have a virtual X (GUI) server (or a regular X server) with automatic login, then you’d completed most of what you need. If and only if this is running and logged in to at the time the rc.local runs, then it is a simple matter of specifying what the DISPLAY environment variable is while starting the application, and it would “just work”. If such login is not already running, then you have to come up with something like a systemd specification which runs OBS as a service. Running as a service allows such things as specifying a required condition to trigger running OBS. That condition could be that a virtual X server login is complete (the virtual server service would run when graphical boot mode is reached; the login could be triggered when graphical mode is complete; OBS could then run as a login for your specific user, but running as a service triggered by the virtual server login would be the most robust).

Note: Probably the easiest thing is to set up a virtual server (I don’t have any recommendation) if you don’t have a physical monitor present, and then set up auto login on that, along with tying OBS start to login of that user. No need for a virtual server if you have a monitor present.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.