I can't start the virtual camera in OBS - ubuntu (framework 13)

Hi there,

Ubuntu 24.04
6.8.0-41-generic
Framework Laptop 13 (AMD Ryzen 7040Series)/FRANMDCP05, BIOS 03.05 03/29/2024

I am using OBS from flatpak (30.2.3) and I can’t get the Virtual Camera to start.
I get the following error:

Starting the output failed. Please check the log for details.
Note: If you are using the NVENC or AMD encoders, 
make sure your video drivers are up to date.

Has anyone run into this issue?

Thank you,
-drd

Did you try changing your encoder settings to software/cpu?

Yes,

Settings > Output> (Recording | Streaming) > Video Encoder is set to Software (x264).
Is there any other setting I should change?

What does it say in theblog it mentions?

Can you post the log?

https://pastecode.io/s/zfvai9jv

11:24:25.874: Using EGL/X11
11:24:25.875: CPU Name: AMD Ryzen 5 7640U w/ Radeon 760M Graphics
11:24:25.875: CPU Speed: 2158.408MHz
11:24:25.875: Physical Cores: 6, Logical Cores: 12
11:24:25.875: Physical Memory: 31394MB Total, 11700MB Free
11:24:25.875: Kernel Version: Linux 6.8.0-41-generic
11:24:25.875: Flatpak Branch: stable
11:24:25.875: Flatpak Arch: x86_64
11:24:25.875: Flatpak Runtime: runtime/org.kde.Platform/x86_64/6.6
11:24:25.875: App Extensions:
11:24:25.875: - com.obsproject.Studio.Locale
11:24:25.875: Runtime Extensions:
11:24:25.875: - org.freedesktop.Platform.GL.default
11:24:25.875: - org.freedesktop.Platform.openh264
11:24:25.875: - org.kde.KStyle.Adwaita
11:24:25.875: - org.kde.Platform.Locale
11:24:25.875: - org.freedesktop.Platform.GL.default
11:24:25.875: Flatpak Framework Version: 1.14.6
11:24:25.875: Desktop Environment: i3 (i3)
11:24:25.875: Session Type: x11
11:24:25.875: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
11:24:25.875: Qt Version: 6.6.3 (runtime), 6.6.3 (compiled)
11:24:25.875: Portable mode: false
11:24:25.898: OBS 30.2.3 (linux)
11:24:25.898: ---------------------------------
11:24:25.898: ---------------------------------
11:24:25.899: audio settings reset:
11:24:25.899: samples per sec: 48000
11:24:25.899: speakers: 2
11:24:25.899: max buffering: 960 milliseconds
11:24:25.899: buffering type: dynamically increasing
11:24:25.899: ---------------------------------
11:24:25.899: Initializing OpenGL…
11:24:25.941: Loading up OpenGL on adapter AMD AMD Radeon 760M (radeonsi, gfx1103_r1, LLVM 17.0.6, DRM 3.57, 6.8.0-41-generic)
11:24:25.941: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 24.1.3 (git-0c49f54c76), shading language 4.60
11:24:25.962: ---------------------------------
11:24:25.962: video settings reset:
11:24:25.962: base resolution: 1920x1080
11:24:25.962: output resolution: 1920x1080
11:24:25.962: downscale filter: Bicubic
11:24:25.962: fps: 60/1
11:24:25.962: format: NV12
11:24:25.962: YUV mode: Rec. 709/Partial
11:24:25.963: NV12 texture support enabled
11:24:25.963: P010 texture support not available
11:24:25.965: Audio monitoring device:
11:24:25.965: name: Default
11:24:25.965: id: default
11:24:25.965: ---------------------------------
11:24:25.979: No AJA devices found, skipping loading AJA UI plugin
11:24:25.979: Failed to initialize module ‘aja-output-ui.so’
11:24:25.989: No AJA devices found, skipping loading AJA plugin
11:24:25.989: Failed to initialize module ‘aja.so’
11:24:26.126: [pipewire] No capture sources available
11:24:26.156: [obs-browser]: Version 2.23.6
11:24:26.156: [obs-browser]: CEF Version 103.0.5060.134 (runtime), 103.0.0-5060-shared-textures.2594+g17f8588+chromium-103.0.5060.134 (compiled)
11:24:26.169: VAAPI: API version 1.19
11:24:26.171: FFmpeg VAAPI H264 encoding supported
11:24:26.176: FFmpeg VAAPI AV1 encoding supported
11:24:26.182: FFmpeg VAAPI HEVC encoding supported
11:24:26.255: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.5.2 | RPC Version: 1)
11:24:26.255: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.6.3 | Qt version (run-time): 6.6.3
11:24:26.255: [obs-websocket] [obs_module_load] Linked ASIO Version: 103002
11:24:26.258: [obs-websocket] [obs_module_load] Module loaded.
11:24:26.277: ---------------------------------
11:24:26.277: Loaded Modules:
11:24:26.277: text-freetype2.so
11:24:26.277: rtmp-services.so
11:24:26.277: obs-x264.so
11:24:26.277: obs-websocket.so
11:24:26.277: obs-webrtc.so
11:24:26.277: obs-vst.so
11:24:26.277: obs-transitions.so
11:24:26.277: obs-qsv11.so
11:24:26.277: obs-outputs.so
11:24:26.277: obs-libfdk.so
11:24:26.277: obs-filters.so
11:24:26.277: obs-ffmpeg.so
11:24:26.277: obs-browser.so
11:24:26.277: linux-v4l2.so
11:24:26.277: linux-pulseaudio.so
11:24:26.277: linux-pipewire.so
11:24:26.277: linux-jack.so
11:24:26.277: linux-capture.so
11:24:26.277: image-source.so
11:24:26.277: frontend-tools.so
11:24:26.278: ---------------------------------
11:24:26.278: ---------------------------------
11:24:26.278: Available Encoders:
11:24:26.278: Video Encoders:
11:24:26.278: - ffmpeg_svt_av1 (SVT-AV1)
11:24:26.278: - ffmpeg_aom_av1 (AOM AV1)
11:24:26.278: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264)
11:24:26.278: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1)
11:24:26.278: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC)
11:24:26.278: - obs_x264 (x264)
11:24:26.278: Audio Encoders:
11:24:26.278: - ffmpeg_aac (FFmpeg AAC)
11:24:26.278: - ffmpeg_opus (FFmpeg Opus)
11:24:26.278: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit))
11:24:26.278: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit))
11:24:26.278: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float))
11:24:26.278: - ffmpeg_alac (FFmpeg ALAC (24-bit))
11:24:26.278: - ffmpeg_flac (FFmpeg FLAC (16-bit))
11:24:26.278: - libfdk_aac (libfdk AAC)
11:24:26.278: ==== Startup complete ===============================================
11:24:26.304: All scene data cleared
11:24:26.304: ------------------------------------------------
11:24:26.309: pulse-input: Server name: ‘PulseAudio (on PipeWire 1.0.5) 15.0.0’
11:24:26.309: pulse-input: An error occurred while getting the source info!
11:24:26.309: [Loaded global audio device]: ‘Desktop Audio’
11:24:26.309: pulse-input: Server name: ‘PulseAudio (on PipeWire 1.0.5) 15.0.0’
11:24:26.310: pulse-input: Audio format: s24le, 48000 Hz, 1 channels
11:24:26.310: pulse-input: Sample format s24le not supported by OBS,using float32le instead for recording
11:24:26.310: pulse-input: Started recording from ‘alsa_input.usb-Elgato_Systems_Elgato_Wave_3_BS10M1A03926-00.mono-fallback’
11:24:26.310: [Loaded global audio device]: ‘Mic/Aux’
11:24:26.310: xshm-input: Geometry 3840x2160 @ 3840,0
11:24:26.315: v4l2-input: Start capture from /dev/video6
11:24:26.378: v4l2-input: Input: 0
11:24:26.381: v4l2-input: Resolution: 640x480
11:24:26.381: v4l2-input: Pixelformat: BGR3
11:24:26.381: v4l2-input: Linesize: 1920 Bytes
11:24:26.381: v4l2-input: Framerate: 30.00 fps
11:24:26.382: v4l2-input: /dev/video6: select timeout set to 166666 (5x frame periods)
11:24:26.462: v4l2-input: Start capture from /dev/video4
11:24:26.522: v4l2-input: Input: 0
11:24:26.526: v4l2-input: Resolution: 1280x720
11:24:26.526: v4l2-input: Pixelformat: YUYV
11:24:26.526: v4l2-input: Linesize: 2560 Bytes
11:24:26.526: v4l2-input: Framerate: 10.00 fps
11:24:26.528: v4l2-input: /dev/video4: select timeout set to 500000 (5x frame periods)
11:24:26.529: v4l2-input: Start capture from /dev/video2
11:24:26.661: v4l2-input: /dev/video6: select timed out
11:24:26.661: v4l2-input: /dev/video6: failed to log status
11:24:26.669: v4l2-input: Input: 0
11:24:26.670: v4l2-input: Resolution: 1920x1080
11:24:26.670: v4l2-input: Pixelformat: YUYV
11:24:26.670: v4l2-input: Linesize: 3840 Bytes
11:24:26.670: v4l2-input: Framerate: 59.94 fps
11:24:26.672: v4l2-input: /dev/video2: select timeout set to 83416 (5x frame periods)
11:24:26.674: Switched to scene ‘Intro’
11:24:26.674: ------------------------------------------------
11:24:26.674: Loaded scenes:
11:24:26.674: - scene ‘Intro’:
11:24:26.674: - source: ‘intro TV’ (image_source)
11:24:26.674: - filter: ‘Scaling/Aspect Ratio’ (scale_filter)
11:24:26.674: - source: ‘drio will be’ (text_ft2_source_v2)
11:24:26.674: - source: ‘ElGatoCam’ (v4l2_input)
11:24:26.674: - scene ‘LG only’:
11:24:26.674: - source: ‘lg monitor’ (xshm_input)
11:24:26.674: - scene ‘LG + Brio’:
11:24:26.674: - source: ‘lg monitor’ (xshm_input)
11:24:26.674: - source: ‘Brio’ (v4l2_input)
11:24:26.674: - filter: ‘Chroma Key’ (chroma_key_filter_v2)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - scene ‘LG + Brio + C920’:
11:24:26.674: - source: ‘lg monitor’ (xshm_input)
11:24:26.674: - source: ‘Brio’ (v4l2_input)
11:24:26.674: - filter: ‘Chroma Key’ (chroma_key_filter_v2)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - source: ‘c920’ (v4l2_input)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - scene ‘Keyboard only’:
11:24:26.674: - source: ‘c920’ (v4l2_input)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - scene ‘Me+keyboard’:
11:24:26.674: - source: ‘Brio’ (v4l2_input)
11:24:26.674: - filter: ‘Chroma Key’ (chroma_key_filter_v2)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - source: ‘c920’ (v4l2_input)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - scene ‘Only Brio’:
11:24:26.674: - source: ‘Brio’ (v4l2_input)
11:24:26.674: - filter: ‘Chroma Key’ (chroma_key_filter_v2)
11:24:26.674: - filter: ‘Crop/Pad’ (crop_filter)
11:24:26.674: - scene ‘GatoCam’:
11:24:26.674: - source: ‘ElGatoCam’ (v4l2_input)
11:24:26.674: ------------------------------------------------
11:24:26.805: v4l2-input: /dev/video2: select timed out
11:24:26.805: v4l2-input: /dev/video2: failed to log status
11:24:26.859: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Mic/Aux)
11:24:26.859:
11:24:26.888: v4l2-input: /dev/video2: select timed out
11:24:26.888: v4l2-input: /dev/video2: failed to log status
11:24:26.972: v4l2-input: /dev/video2: select timed out
11:24:26.972: v4l2-input: /dev/video2: failed to log status
11:24:27.055: v4l2-input: /dev/video2: select timed out
11:24:27.055: v4l2-input: /dev/video2: failed to log status
11:24:27.139: v4l2-input: /dev/video2: select timed out
11:24:27.139: v4l2-input: /dev/video2: failed to log status
11:24:27.223: v4l2-input: /dev/video2: select timed out
11:24:27.223: v4l2-input: /dev/video2: failed to log status
11:24:27.306: v4l2-input: /dev/video2: select timed out
11:24:27.306: v4l2-input: /dev/video2: failed to log status
11:24:27.390: v4l2-input: /dev/video2: select timed out
11:24:27.390: v4l2-input: /dev/video2: failed to log status
11:24:27.400: v4l2-input: /dev/video4: select timed out
11:24:27.400: v4l2-input: /dev/video4: failed to log status
11:24:27.473: v4l2-input: /dev/video2: select timed out
11:24:27.473: v4l2-input: /dev/video2: failed to log status
11:24:27.557: v4l2-input: /dev/video2: select timed out
11:24:27.557: v4l2-input: /dev/video2: failed to log status
11:24:27.641: v4l2-input: /dev/video2: select timed out
11:24:27.641: v4l2-input: /dev/video2: failed to log status
11:24:28.584: NV12 texture support enabled
11:24:28.584: P010 texture support not available
11:24:29.878: Starting Virtual Camera output to Scene : LG + Brio

Sure looks like the source you have selected isn’t available. Are you sure you’ve got a working source selected?

Did you install the v4l2loopback module Install Instructions · obsproject/obs-studio Wiki · GitHub ? I don’t think a flatpak would be able to provide that.

Thank you, @Nils:

I followed the instructions:

  1. Check that opengl is supported: glxinfo | grep "OpenGL"
  2. sudo apt install v4l2loopback-dkms
  3. Remove obs from flatpak and install via apt using the repo: ppa:obsproject/obs-studio

But I still have the same issues:

https://pastecode.io/s/x0wgqj7k

Very strange.

Is your Logitech brio plugged into your laptop directly? What format and other input source settings are you trying? What bus speed is it reporting with lsusb -t? Does it work with cheese? Is your brio firmware up to date?

Is your Logitech brio plugged into your laptop directly?

No, it goes through an usb3 hub.

What format and other input source settings are you trying?

What bus speed is it reporting with lsusb -t?

31a32,36
>                 |__ Port 003: Dev 032, If 0, Class=Video, Driver=uvcvideo, 480M
>                 |__ Port 003: Dev 032, If 1, Class=Video, Driver=uvcvideo, 480M
>                 |__ Port 003: Dev 032, If 2, Class=Audio, Driver=snd-usb-audio, 480M
>                 |__ Port 003: Dev 032, If 3, Class=Audio, Driver=snd-usb-audio, 480M
>                 |__ Port 003: Dev 032, If 4, Class=Human Interface Device, Driver=usbhid, 480M

Does it work with cheese?

Yes, it does work with cheese.

Is your brio firmware up to date?

No. I have to research how to do that from linux.

Have you tried directly connected to the laptop? Have you tried changing formats, resolution and framerates?

I have tried connecting the camera directly without success.
I haven’t tweaked the resolution/frame rates.
Can you share your resolution/frame rates? Probably not useful because you have different hardware but maybe worth trying.

Thank you for your help,
-drd

I would be trying anything you can. One other user was having similar issues with opencv and updating the firmware on his brio fixed the issue.

You can passthrough it as a USB device probably into a windows VM to do the firmware update.

Not sure if that is relevant but I have other webcams and I have the same problem. Also, one of the scene does not have any cam (is just test and an image) and I still get the same error when trying to load virtual cam.

Maybe try backing up your OBS scenes/profile and then clearing it.

I actually did that when I removed the flatpak installation and moved to the apt repo for installing OBS.

So the same issue? With a brand new profile with just one scene?

Maybe get a log from that simpler setup to post. Might make it easier to figure it out.

Does it work with the onboard webcam?

When setting up the v4l2 source does it show your camera preview working?

Can report that following works fine for me:

OBS Studio Flatpak
sudo apt install v4l2loopback-dkms

And virtual camera works fine for me on PopOS on FW13 AMD