Jetson Nano live stream for a race car

Hello Guys

I am super new in this forum, and also into the Jetson nano device.

Hopefully i can get the help i need through here.

I am into car racing, and stream live all of my races.

The way I do it, is live stream 2 GoPros into a PC in the pits, this Pc runs OBS and I have a built scene which I then stream into YouTube, Facebook, etc.

I have now the idea to put a jetson nano inside my car, hook up both GoPros into the usb ports, maybe a pi cam, and connect the nano Ethernet into a 4g modem i have in car, which connects to the internet

Problem is…. I don’t know anything about the nano or Linux, just know i need OBS software.

I do have a el gato cam link and would like to use one of the go pros like webcam.

Do you think this is a doable project? The nano and modem will have a dedicated ventilation system to handle heat

Thanks in advance!

Thanks in advance

Probably it would be possible to do that,
You may better tell your case. What are the GoPro cams models ? Do they provide an UVC driver ? What are the V4L formats available ? Multiple MJPG cameras may have issues with Nano.

Hey! Thanks for replying

So, both go pros are 10 model.

There is a GoPro driver for mac and Pc, but not for Linux, I found this: GitHub - jschmid1/gopro_as_webcam_on_linux: Allows to use your GoPro camera as a webcam on linux

But really, I don’t know what should I do, I seems like regular coding for people that do this … but it’s my first time with coding, I just don’t know how to follow

About the v4l, don’t really know, I have read that 720p will be good for streaming though.

Thanks for your support, I think it’s a possibility!!

The code from your above link mainly uses ffmpeg for reading IP camera streaming MPEG TS. The code may help to find the IP camera and configure/check. Maybe gstreamer on Jetson would leverage more HW accelerated processing. There is also a NVIDIA release of ffmpeg that would leverage HW decoding.

However, this may not add any improvement to your current process. If you want to capture from these GoPro 10 through USB link, you may try the following and tell where it fails: I’m using a USB ZED camera as example.
First disconnect any camera from USB.
Also assuming that no other camera is connected, so:

ls /dev/video*

should report no node.
Then launch in a terminal:

sudo dmesg --follow

You don’t need to look at all kernel messages, just look at what happens when you plug the GoPro in. In my case:

[ 7180.529988] usb 2-3.4.1: new SuperSpeed Gen 1 USB device number 7 using tegra-xusb
[ 7180.559975] usb 2-3.4.1: New USB device found, idVendor=2b03, idProduct=f582, bcdDevice= 1.00
[ 7180.559984] usb 2-3.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7180.559989] usb 2-3.4.1: Product: ZED
[ 7180.559992] usb 2-3.4.1: Manufacturer: Technologies, Inc.
[ 7180.563216] uvcvideo: Found UVC 1.10 device ZED (2b03:f582)
[ 7180.576116] input: ZED: ZED as /devices/platform/3610000.xhci/usb2/2-3/2-3.4/2-3.4.1/2-3.4.1:1.0/input/input13

The main points to look at are if it is recognized, at what address, what is the device USB ID (in this case 2b03:f582), and what class (involving which driver) it is recognized as.

You may also get some info with lsusb;

lsusb -tv
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
        ID 0bda:0420 Realtek Semiconductor Corp. 
        |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
            ID 05e3:0612 Genesys Logic, Inc. Hub
            |__ Port 1: Dev 7, If 0, Class=Video, Driver=uvcvideo, 5000M
                ID 2b03:f582  
            |__ Port 1: Dev 7, If 1, Class=Video, Driver=uvcvideo, 5000M
                ID 2b03:f582  
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
...

# Get more details for your device ID
lsusb -d 2b03:f582 -v

If it shows UVC driver for your device, and if you have a node appearing such as /dev/video0, it would be easy using V4L and gstreamer.

If not, it may not be easy.
There may be different modes to be tried from camera or Mac/Windows/Android application, but I have no experience with this camera.

Let us know what gives the suggested scheme.

Wow bro! Thanks for all this really!!

I will check this when I have everything together

Would you like to take this as a side project for me? Of course paid! I can we reached at g meil
@ saidxl

Hoping we can be connected and get this project running up!

Hey !

I can’t even get the OBS installed, i believe this needs to be for a ARM64 architecture, OBS is for x86 i think

Any ideas how can i do it? I know it can be done

Thanks!

Hi, did you investigate the USB connection as suggested above ?
My guess is that it would create an IP bridge over USB, and multicast stream with UDP transport.
A few seconds after having plugged the camera in, do you see an IP address for usb0 interface (a line with inet)?

ifconfig usb0

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

but I’d advise to create a different topic for each issue, so that it could help other users.