Spent half the night to wrap my head around this and finally getting somewhere with #v4l and #OBSstudio and a loopback device so I can stream this “as fake webcam” over WebRTC in video conferences.
Getting this to run (and smooth!) on #Linux was a PITA. Who would have guessed. And all because I don’t want a “streaming” service or some gorram gold membership in a specific video conference “app”.
Expect an article!
@bekopharm Spacekommander 😄 👍
@Anika ah… first screenshot I found in $HOME – don’t mind 😂
@bekopharm I did this a few weeks back and have been using v4l2loopback with OBS to get a higher fps screenshare through Jitsi, working very well :)Which part was a pain in the ass to you?
@unicorn v4l2loopback is indeed in use (awesome btw – fiddled with it in 2017 already using my action cam as webcam: https://beko.famkos.net/2017/10/27/sony-fdr-x1000v-as-webcam/ ) but(!) most WebRTC access out there is… flaky at best.It e.g. always works on https://webcamtests.com/ but on https://test.webrtc.org/ basically only when I run FF with new/blank tmp profile reliable.It does detect my devices but somehow never asks permission for any device but my first “two” cameras probably not liking the “features” (codec is fine).
Sony FDR-X1000V as Webcam – beko.famkos.net
@bekopharm how did you get the resolution fixed? Last time I tried the resolution was too bad to see anything on the remote end (local and test were fine)
@tuxflo Not sure _where_ you mean. Resolution may degrade in the browser due to bandwith. The stream, once negotiated, never changes:> Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280×720, q=2-31, 331776 kb/s, 30 fps, 30 tbn, 30 tbcI had to compromise here. Cam can higher resolutions but the fps degrade badly in that case. It’s simply at it’s limit so the real webcam operates at ~800×600.There’s also “keep_format:1” that can be set on the video loopback device.
@bekopharm I agree it’s not super consistent, I remember seeing an alternative to v4l2loopback and a chart showing some applications in which either do/don’t work. You might also want to give one of the options mentioned on the GitHub a try that is supposed to enable compatibility with chrome/chromium based things. It’s mentioned somewhere in the readme :)The need to self-compile is definitely a barrier, but these two were easier than most things I have attempted to compile.
@bekopharm Overall it’s not optimal, but possible in not too much time. It just has a bit of an entry barrier for people who don’t mess with their system very much.Still it was a breeze compared to my attempts to route desktop audio and microphone into a single virtual input device so that the other person can hear things I am hearing 😄That took me several attempts over the span of a couple of months. Spent like 4 days figuring it out overall, giving up multiple times 😅
@unicorn Been there, done that :)Fiddled with this all night and learned more than I ever wanted about.…Chrome is all “loopdevice is not upstream kernel – don’t care”.About compiling: That’s IMHO luck in this case. I compiled this several times since 2017 and I had to patch stuff manually again and again.Last commit on obs-v4l2sink e.g. is ~1.5yrs ago. That’s never a good sign.
@bekopharm this is what the commandline of ffmpeg prints here too. However when using in Jitsi or similar WebRTC based app it looks way too pixelized like described here: https://github.com/umlaeute/v4l2loopback/issues/264
Fake ffmpeg webcam has bad resolution · Issue #264 · umlaeute/v4l2loopback
@bekopharm Yeah obs-v4l2sink is not without its issues, for example it just crashes OBS if I try to run it with 720p downscaled video, even though I could swear it worked before 🤷♂️Compilation luck may also depend on the distro; I did it on Debian and Ubuntu, for which there are even some repo packages for v4l2loopback and a .deb file for obs-v4l2sink. Overall it’s not great, yeah. Very useful when it works though, would not be able to play a game with my partner over Jitsi without it 🙂