A lot of people asked me about my OBS setup. So I'm releasing a few details here. Feel free to ask questions in case I forgot anything.
Yes, I'm recording my videos on a laptop. Initially, I tried a 5 year old X1 Yoga running Linux. While this works okay-ish, once I used a dual camera setup, my recordings sometimes had very low frames per second and other weird effects. Using the cheapest MacBook Pro 2019 model (the 1.4 GHz variant with 8 GB RAM), recording works after a reboot and closing all other programs, even when running two OBS instances at once. Since upgrading to a MacBook Pro 2020 (2 GHz, 16 GB RAM) all these issues are gone.
Always make a couple of test recordings that last longer than a minute to see if your laptop can handle the load. I had to re-record one of my talks that I recorded on the X1 Yoga because 5 frames per second and lagging audio didn't make me happy ;)
Webcams suck. Even the one in my MacBook Pro 2020. If you can, just use your smartphone. On macOS, once you plug in your iPhone, you can use it as input device. This seems to be a macOS only feature, though. Don't forget to set the input resolution to "High", otherwise, you'll get some weird black borders. Now, you can open the camera app, rotate the picture, crop borders, etc. Luckily, @unixb0y created a simple iPhone app for me that also uses the camera but without the camera elements. He tried to get it accepted into the official App store but wasn't successful in getting it accepted :( So, just use your camera app and crop it, I guess. Or install his OBSCam app via Altstore.
With a bit of hacking, you can even use your iPhone as input device on Linux, as documented by @zekjur. For Android devices, there is the DroidCam app, and you can also integrate this as an input device on Linux with a special kernel driver. The setup is not that intuitive, and even though I got it working, I'm not sure if adding a kernel driver just for a decent camera setup is worth this...
Another nice detail about using a smartphone camera is that you can adjust the height and avoid a double-chin. Try different angles, heights, and pick whatever suits you.
And don't forget to put your smartphone into flight mode while you're recording xD
@lavados told me about this trick in something like three Twitter DMs. And now, every time I record a talk using this method, everyone asks me how I did this :D I don't have a green screen, and I really like this method.
Ideally, you have two separate camera inputs for this, e.g., a smartphone and your laptop's webcam. Otherwise, you can also crop your camera input into two parts and use one area for the hands, I guess. The overall idea is to:
The setup looks as follows. Note that I didn't add any additional light source in this picture, so the background is too dark, but at least you'll get the overall idea of the setup a bit better. This is me, taking a picture with an iPhone 12 of an iPhone 11 attached to my OBS setup, because you can never have sufficient amounts of iPhones... The only reason why this setup is low-cost is that I assume you already have at least one smartphone.
Add your slides either as app window (try to avoid this, had low frames per second for me) or via an external screen. In this screenshot I don't have an external screen attached, so it looks a bit weird ;) On the slide input, set white as transparent color with a Colour Key filter.
Usually, I only crop a part of the webcam input with an area that looks sufficient white. I mirror it so that it doesn't get too confusing. I prefer to use the top right area for that, such that I can make gestures over there that are not visible in my iPhone camera recording.
You're done! You can point on stuff in your slides with your hands. Or cats. Or unicorns. Whatever you prefer.
Just use as many light sources as you can. Try to avoid shadows in your face. Only if it hurts a bit in your eyes it's sufficient amount of light.
Ideally use a sound input with wires, especially if you're streaming. Otherwise, you might get collisions on 2.4 GHz. And double-check that you're on a 5 GHz Wi-Fi. Ooooh, and, don't let your dishwasher running, close all windows, feed the cat. Eliminate all noise sources.
Initially, I used the EarPods that came with an iPhone SE 1st generation. Still better than recording sound via the laptop. I know you hate listening to your own voice, everyone does, but try to take a few audio samples and compare them. If you're using EarPods or something similar, avoid that they scratch on your clothes.
My most recent recordings were with a RØDE USB microphone. Also double-check into which direction you're speaking for these, it makes a lot of difference.
Another vital setting is the sound filter in OBS, which filters fan noise. No template that I used so far ships with this and I ruined one of my recordings, because the sound filter setting is different per scene collection. It was set to use my laptop's microphone despite I had the EarPods plugged in and recorded all the fan noise on top. After trying several audio filters with ffmpeg and Audacity, I was able to remove the fan noise, but the remaining sound was a bit like "under water" or "behind a thick wall".
To select a microphone and set a filter, click on the audio mixer microphone settings button.
Add a noise suppression filter. The high-quality filter is quite new, before, I was using the other filter with -30 dB and it worked for me as well.
Because the microphone selection might change, I do a few seconds test recording before each recording to triple-check that nothing changed and I'm audible.
Oh, and try to use the arrow keys for your presentation, at least the MacBook touchpad clicks are quite loud.
Black Hat US wanted us to record two separate videos, one of the slides, and one of the camera. They were post-editing videos to combine both videos, whenever only slides / only speaker / both of it was the best option to show something.
To run OBS twice on macOS, execute it using the absolute path from the command line (/Applications/OBS.app/Contents/MacOS/obs). I don't really recommend this kind of setup but it works. Double-check that it also works if you use the same camera input twice etc., just to be sure it really works.