Call for testing: OBS-Studio snap

Yep, I made a ffmpeg 4.0 snap (currently classic) that supports nvenc and VA-APPI hardware accelerated decoding and encoding. I also have a prototype that is strictly confined, just waiting on some AppArmor tweaks in snapd so this can be reused.

The ffmpeg snap is 20MB so small enough to bundle in an application snap that requires ffmpeg.

2 Likes

Hi guys,

Sorry for possibly bumping this but I have a question - and I think you guys are the perfect people to ask!

Right now I use Ubuntu 16.04 and I have a script I made that builds FFMpeg 3.4 with NVENC support and builds the latest OBS Studio from the GitHub repo master branch and it works great using NVENC recording in OBS Studio with my GTX 1070. I am wondering - if I use Ubuntu 18.04 with snaps, is it possible for me to just install an FFMpeg snap and an OBS Studio snap and then I can use NVENC recording in OBS Studio with my GTX 1070 - that way, with two snaps, I no longer need to build? Is this possible in Ubuntu 18.04? What about in Ubuntu 16.04 - is this possible?

If this is not currently possible, is it planned for the future?

Thanks!

@ipkpjersi Iā€™ve been working on an ffmpeg 4.0.x snap which can now be confined. The plan is to bundle ffmpeg, that supports accelerated encoding, in the OBS snap.

3 Likes

Hi,

That is awesome news. I am so glad there is a plan for the OBS snap to come with an NVENC-enabled ffmpeg. Thanks so much.

Cheers.

1 Like

see either:

or the description of the output of:

snap info obs-studio

there are instructions ā€¦

The indicator has no function, no matter how I click it, nothing happens.
OS: Ubuntu 18.04

It wonā€™t run for me.

Ubuntu 18.10
NVIDIA GTX 960 | 396.54.09 from graphics-drivers/dev ppa

cxf@PC:~$ snap run obs-studio
+ case "$SNAP_ARCH" in
+ ARCH=x86_64-linux-gnu
+ OBS=64bit
+ cd /snap/obs-studio/213/usr/bin/64bit
+ exec ./obs
Gtk-Message: Failed to load module "gail"
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "unity-gtk-module"
Qt: Session management error: None of the authentication protocols specified are supported
Attempted path: ../../data/obs-studio/locale/en-US.ini
Attempted path: ../../data/obs-studio/locale.ini
Attempted path: ../../data/obs-studio/themes/Dark.qss
Attempted path: ../../data/obs-studio/license/gplv2.txt
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
info: CPU Name: Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
info: CPU Speed: 3314.120MHz
info: Physical Cores: 4, Logical Cores: 4
info: Physical Memory: 7872MB Total, 1577MB Free
info: Kernel Version: Linux 4.18.0-11-generic
info: Distribution: "Ubuntu Core" "16"
info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.20.1
info: Portable mode: false
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 22.0.3-modified (linux)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
	samples per sec: 44100
	speakers:        2
info: ---------------------------------
info: Initializing OpenGL...
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
error: Failed to create OpenGL frame buffer config
error: Failed to create context!
error: device_create (GL) failed
error: Failed to initialize video.  Your GPU may not be supported, or your graphics drivers may need to be updated.
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
info: Freeing OBS context data
info: == Profiler Results =============================
info: run_program_init: 22791.7 ms
info:  ā”£OBSApp::AppInit: 13.942 ms
info:  ā”ƒ ā”—OBSApp::InitLocale: 2.862 ms
info:  ā”—OBSApp::OBSInit: 2902.96 ms
info:    ā”£obs_startup: 21.874 ms
info:    ā”—OBSBasic::OBSInit: 33.476 ms
info:      ā”£OBSBasic::InitBasicConfig: 0.353 ms
info:      ā”£OBSBasic::ResetAudio: 0.174 ms
info:      ā”—OBSBasic::ResetVideo: 29.54 ms
info: obs_hotkey_thread(25 ms): min=0.051 ms, median=0.61 ms, max=5.958 ms, 99th percentile=2.427 ms, 100% below 25 ms
info: audio_thread(Audio): min=0.001 ms, median=0.036 ms, max=0.18 ms, 99th percentile=0.056 ms
info: =================================================
info: == Profiler Time Between Calls ==================
info: obs_hotkey_thread(25 ms): min=25.129 ms, median=25.719 ms, max=31.043 ms, 15.2778% within Ā±2% of 25 ms (0% lower, 84.7222% higher)
info: =================================================
info: Number of memory leaks: 174

Hello

Issue: OBS does not detect my blackmagic card.

System configuration
Ubuntu 18.04
RX 570 open source drivers
uname -a Linux deepcool 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

No issue with blackmagic software install

When I used obs 21 in the ubuntu repo windows capture would display colours incorrectly. But the blackmagic card would have an option in the obs sources. I forget what it was called So I decided to use obs in the snap repo and that problem was resolved only to be replaced with this one.

How do I have my cake and eat it too?

Run the following command and report the output:

env SNAP_CONFINE_DEBUG=1 snap run obs-studio

The snap packaging probably didnā€™t migrate the configuration to the new snap revision during a snap upgrade/refresh, you should be able to acquire the old configuration at ~/snap/obs-studio/old_revision

It works now and it has NVENC support! Thank you guys!

1 Like

I canā€™t use my video capture card due to an apparmor profile issue.

Iā€™ve made sure that the necessary interfaces where all there:
snap connections obs-studio
Interface Plug Slot Notes
alsa obs-studio:alsa :alsa manual
camera obs-studio:camera :camera -
desktop obs-studio:desktop :desktop -
desktop-legacy obs-studio:desktop-legacy :desktop-legacy -
hardware-observe obs-studio:hardware-observe :hardware-observe manual
home obs-studio:home :home -
network obs-studio:network :network -
network-bind obs-studio:network-bind :network-bind -
opengl obs-studio:opengl :opengl -
optical-drive obs-studio:optical-drive :optical-drive -
pulseaudio obs-studio:pulseaudio :pulseaudio -
removable-media obs-studio:removable-media :removable-media manual
unity7 obs-studio:unity7 :unity7 -
wayland obs-studio:wayland :wayland -
x11 obs-studio:x11 :x11 -

However when run try to connect add my capture device as a video capture device, the input is an all black screen, and I get this on dmesg:
audit: type=1400 audit(1555187313.230:2295): apparmor=ā€œDENIEDā€ operation=ā€œopenā€ profile=ā€œsnap.obs-studio.obs-studioā€ name="/sys/devices/virtual/dmi/id/board_vendor" pid=16491 comm=ā€œobsā€ requested_mask=ā€œrā€ denied_mask=ā€œrā€ fsuid=1000 ouid=0

Running the snap with --classic is a workaround, but I think it defeats part of the purpose of using snaps.

1 Like

Seems like that would be allowed by hardware-observe from this line: https://github.com/snapcore/snapd/blob/master/interfaces/builtin/hardware_observe.go#L49

1 Like

What is your video capture cardā€™s model anyway?

Itā€™s the one that Slimbook sells, it works perfectly under Ubuntu. Iā€™ve used already on previous occasions.

As you can see on my previous post, that is an interface that was present and connected.
OBS does detect the device, It just canā€™t read from it.

Driver update broke OBS.

cxf@PC:~$ nvidia-smi
Wed Apr 24 23:47:31 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.09       Driver Version: 430.09       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     Off  | 00000000:01:00.0  On |                  N/A |
| 49%   51C    P0    30W / 208W |    601MiB /  4042MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1427      G   /usr/lib/xorg/Xorg                            15MiB |
|    0      1471      G   /usr/bin/gnome-shell                         126MiB |
|    0      1731      G   /usr/lib/xorg/Xorg                           153MiB |
|    0      1899      G   /usr/bin/gnome-shell                         148MiB |
|    0      2816      G   ...equest-channel-token=581587810092532715    58MiB |
|    0     19005      G   /usr/lib/firefox/firefox                      93MiB |
+-----------------------------------------------------------------------------+

cxf@PC:~$ snap run obs
error: cannot find current revision for snap obs: readlink /snap/obs/current: no such file or directory
cxf@PC:~$ snap run obs-studio
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error:  GLXBadContext
  Request Major code 151 (GLX)
  Request Minor code 6 ()
  Error Serial #54
  Current Serial #53
/snap/obs-studio/391/usr/sbin:/snap/obs-studio/391/usr/bin:/snap/obs-studio/391/sbin:/snap/obs-studio/391/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Qt: Session management error: None of the authentication protocols specified are supported
Attempted path: ../../data/obs-studio/locale/en-US.ini
Attempted path: ../../data/obs-studio/locale.ini
Attempted path: ../../data/obs-studio/themes/Dark.qss
info: CPU Name: Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
info: CPU Speed: 2793.508MHz
info: Physical Cores: 4, Logical Cores: 4
info: Physical Memory: 7869MB Total, 330MB Free
info: Kernel Version: Linux 5.0.0-13-generic
info: Distribution: "Ubuntu Core" "18"
info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.20.4
info: Portable mode: false
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 23.1.0 (linux)
info: ---------------------------------
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
info: ---------------------------------
info: audio settings reset:
	samples per sec: 44100
	speakers:        2
info: ---------------------------------
info: Initializing OpenGL...
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
error: X Error: BadMatch, Major opcode: 151, Minor opcode: 34, Serial: 34
error: Failed to create OpenGL context.
error: Failed to create context!
error: device_create (GL) failed
error: Failed to initialize video.  Your GPU may not be supported, or your graphics drivers may need to be updated.
info: Freeing OBS context data
info: == Profiler Results =============================
info: run_program_init: 2965.99 ms
info:  ā”£OBSApp::AppInit: 1.917 ms
info:  ā”ƒ ā”—OBSApp::InitLocale: 0.796 ms
info:  ā”—OBSApp::OBSInit: 168.041 ms
info:    ā”£obs_startup: 0.985 ms
info:    ā”—OBSBasic::OBSInit: 18.702 ms
info:      ā”£OBSBasic::InitBasicConfig: 0.148 ms
info:      ā”£OBSBasic::ResetAudio: 0.139 ms
info:      ā”—OBSBasic::ResetVideo: 18.358 ms
info: obs_hotkey_thread(25 ms): min=0.057 ms, median=0.13 ms, max=24.239 ms, 99th percentile=4.289 ms, 100% below 25 ms
info: audio_thread(Audio): min=0.014 ms, median=0.015 ms, max=0.02 ms, 99th percentile=0.019 ms
info: =================================================
info: == Profiler Time Between Calls ==================
info: obs_hotkey_thread(25 ms): min=25.126 ms, median=25.204 ms, max=49.312 ms, 91% within Ā±2% of 25 ms (0% lower, 9% higher)
info: =================================================
info: Number of memory leaks: 244

Iā€™ve just triggered a rebuild which should land in the edge channel a little later. If you snap refresh obs-studio --edge can you give that a shake and see if itā€™s still got a problem?

Iā€™ve discussed about this topic on the IRC and it appears to be a problem within the NVIDIA support glue.

No dice.

cxf@PC:~$ snap run obs-studio
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error:  GLXBadContext
  Request Major code 151 (GLX)
  Request Minor code 6 ()
  Error Serial #54
  Current Serial #53
/snap/obs-studio/441/usr/sbin:/snap/obs-studio/441/usr/bin:/snap/obs-studio/441/sbin:/snap/obs-studio/441/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Qt: Session management error: None of the authentication protocols specified are supported
Attempted path: ../../data/obs-studio/locale/en-US.ini
Attempted path: ../../data/obs-studio/locale.ini
Attempted path: ../../data/obs-studio/themes/Dark.qss
info: CPU Name: Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
info: CPU Speed: 2953.585MHz
info: Physical Cores: 4, Logical Cores: 4
info: Physical Memory: 7869MB Total, 3636MB Free
info: Kernel Version: Linux 5.0.0-13-generic
info: Distribution: "Ubuntu Core" "18"
info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.20.4
info: Portable mode: false
Attempted path: ../../data/obs-studio/themes/Dark/no_sources.svg
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 23.1.0-161-gf21a48ff (linux)
info: ---------------------------------
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
info: ---------------------------------
info: audio settings reset:
	samples per sec: 44100
	speakers:        2
info: ---------------------------------
info: Initializing OpenGL...
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
error: X Error: BadMatch, Major opcode: 151, Minor opcode: 34, Serial: 34
error: Failed to create OpenGL context.
error: Failed to create context!
error: device_create (GL) failed
error: Failed to initialize video.  Your GPU may not be supported, or your graphics drivers may need to be updated.
info: Freeing OBS context data
info: == Profiler Results =============================
info: run_program_init: 1945.73 ms
info:  ā”£OBSApp::AppInit: 1.753 ms
info:  ā”ƒ ā”—OBSApp::InitLocale: 0.822 ms
info:  ā”—OBSApp::OBSInit: 133.941 ms
info:    ā”£obs_startup: 1.11 ms
info:    ā”—OBSBasic::OBSInit: 15.521 ms
info:      ā”£OBSBasic::InitBasicConfig: 0.144 ms
info:      ā”£OBSBasic::ResetAudio: 0.105 ms
info:      ā”—OBSBasic::ResetVideo: 15.229 ms
info: obs_hotkey_thread(25 ms): min=0.065 ms, median=0.391 ms, max=0.74 ms, 99th percentile=0.74 ms, 100% below 25 ms
info: audio_thread(Audio): min=0.01 ms, median=0.026 ms, max=0.047 ms, 99th percentile=0.047 ms
info: =================================================
info: == Profiler Time Between Calls ==================
info: obs_hotkey_thread(25 ms): min=25.141 ms, median=25.439 ms, max=25.863 ms, 52.381% within Ā±2% of 25 ms (0% lower, 47.619% higher)
info: =================================================
info: Number of memory leaks: 244