This post is a supplement to a presentation I gave for TE-MP0 on Twitch on 11/17/2020. The presentation focused on how to incorporate graphical features into an OBS stream. The talk was geared toward electronic musicians, but the techniques can be used by anyone. What follows is a summary of techniques and tools highlighted in the video.
- Already familiar with Open Broadcaster Software (OBS) – which is free and open source. I happen to be using v26.0.2 on Mac.
- You’ve done some streaming, have good music/audio content, but want to know how to make more interesting visuals.
- You have an open mind!
The focus here is on techniques, not the specific tech.
- Everything shown here can be done with other streaming/broadcasting programs (like VMIX). OBS is simply the tool that I’m the most familiar with right now. Similar options are available in StreamLabs OBS, and the Twitch browser-based streaming tool. There are some other browser-based streaming platforms, but they are not quite as robust as OBS at the time of this post.
- Some of this stuff is easy on the surface, but putting it into practice effectively still takes time, just like anything worthwhile.
- This is also a supplement to my general streaming guide from Cosmic Stream Fest, which is still very relevant, though could use an update soon.
Use these techniques at your own risk! No warranties expressed or implied!
Cameras are the most common visual element that most people will use. Cameras can be connected a number of ways, but the easiest is a USB camera (available for as little as $30 on Amazon – see my gear list below). Most media elements in OBS – especially cameras – allow you to apply a filter to change color, opacity, apply masks and work with chroma for green screens. Creative use of filters can get you started with interesting visuals without doing much else. Try changing the opacity of your camera feed to overlap images.
If you have an IP security camera laying around, you might be able to use it in OBS using RTSP (Real-Time Streaming Protocol). Check with the camera manufacturer for specifics, but there are a few things you’ll need to do:
1. Establish the IP address of the camera (usually found via your router or an app provided with the camera)
2. Lock down the camera if at all possible. This is optional, but recommended.
3. Establish the RTSP URL needed to connect to the camera. It’s usually something like rtsp://USERID:PW@IPADDRESS:PORTNUMBER/video.sdp
4. With the camera connected to your network, create a VLC Video Source in OBS and plug in the URL.
The URL provided above is just an example. The specific syntax for your camera may differ based on manufacturer and model.
A note about video quality…
Everything I do here is with a base canvas of 1920 x 1080, but is rescaled to 1280 x 720. Nothing that I show here uses 4K cameras because I simply do not have a need for them. 4K means more processing, and more storage. So unless you absolutely need 4K, I suggest avoiding it in favor of a ubiquitous 1080p webcam that gets the job done with minimal fuss.
Using external gear
I typically run everything for my stream on one device. This can be a challenge because most graphical elements are going to take up a lot of GPU and OBS itself takes a lot of GPU. To work around these limitations, I try to offload as much graphical processing as possible. I do this in a few different ways, some of which are low-tech.
IDEA #1 – Use an SD player (see below for recommendations) to play pre-rendered files on a separate monitor. Point one of your webcams at the monitor, allowing you to capture that monitor output in OBS. Perhaps apply filters in OBS to alter the result yet again.
IDEA #2 – Use DJ, or party lasers or lights (Halloween clearance is a great time to get these!). Focus/point lights at a blank wall or ceiling, then point your webcam at the wall to capture the result. You can get carried away with this stuff by using professional lighting as well, but I have found that some of the coolest effects can be obtained without dropping a lot of cash.
IDEA #3 – Use an analog video synth, like the CHA/V by Jonas Bers. This device is more for the electronics enthusiast, but well worth investigating if you have soldering experience. You’ll also need some way to get the VGA output of this device into your computer. For that you need a capture solution, which in my case is the BlackMagic Intensity Shuttle.
IDEA #4 – Use a digital video synth like something from Critter and Guitari. They offer a few options, both current and discontinued.
There are several dedicated graphics generators, often used by VJs to create crazy graphics for their shows. I’m mentioning two that I have personally used and like.
Magic Music Visualizer is an object-oriented environment that allows you to create original visuals a number of ways. You can process still images, manipulate existing video, or process camera footage on the fly. It also has pattern generation and filtering capability for all manner of special effects.
Magic is a deep program that requires a lot of time to explore. I find it is best used to create pre-rendered files. However, it can be used live as well. You can bring Magic output into OBS two different ways – via the Syphon protocol, or by running the Magic program in full screen mode and capturing that with Window Capture.
Lumen (Mac only) – This is a bit less abstract program that puts a lot of controls at your fingertips using easy-to-grasp knobs and a visual interface. You can bring Lumen output into OBS two different ways – via the Syphon protocol, or by running the Magic program in full screen mode and capturing that with Window Capture. Lumen, like Magic, can also process camera input on the fly.
Both Magic and Lumen are VERY reasonably priced for that they do. They both require significant GPU resources to run with OBS at the same time, particularly if you are doing audio too. So test on your machine(s) to see what works and what doesn’t.
Motion FX (Mac only) – This is a free program available in the Apple store. It includes over 80 presets from Smoke, to Fire, to Rainbow Plasma, react in real-time to your movements. Effects can be displayed alone or composited on top of live video from your computer’s camera.
There are 5 Modes: Motion Detect – Effects are created based on motion detected by your computer’s camera; Face Detect – Emit effects from all visible faces; Color Detect – Choose the color to emit effects from the video feed; Effect Paint – Paint effects using your mouse or trackpad; Video Warp – Warp live video using your mouse or trackpad
You can hook up multiple cameras and switch between them, and there is support for multiple displays lets VJs and performance artists use one display for control and another for projection to an audience.
Advanced Scene Switcher
For robust scene changes, try the Advanced Scene Switcher plugin for OBS.
Network device interface (NDI)
Another tool in your toolbox for adding graphical interest to a stream is NDI (Network Device Interface). This is a slightly more advanced topic that I did not cover in my Twitch workshop, but I wanted to mention it here.
NDI is basically a way to send/capture content (video and or audio) from any machine on your network. For our purposes here, you might have a visualization running on one machine, and you can send that over to your broadcasting machine.
NDI is free and – even better – platform independent, so it works in hybrid Mac/PC environments. Like anything else here, NDI is best used over Ethernet, but can be used over WIFI with the usual caveats.
Download NDI tools: https://ndi.tv/tools/ (this is several little applets)
Open the NDI Scan Converter app
Select video and audio (or just video) that you want to send. This is usually based on the monitor connected to the sending machine.
Download NDI tools: https://ndi.tv/tools/ (this is several little applets)
Open the NDI Video Monitor app
Select input and confirm you have a signal. If this works, proceed to OBS.
Get the NDI for OBS plugin here:
Install NDI for OBS
In OBS select NDI Source
Select the source name based on the machine that is sending the video/audio.
Resize/filter as needed just as you would any other camera source.
The NDI suite of apps includes a color bar tester, which is handy for setup and a few other things to explore. Even though this is one of the more advanced topics here, it’s surprisingly easy to set up and could be a key part of your setup if exploited creatively.
Generative and AI-based visual art is all over the place these days. While not exactly my thing right now, live coding has become very popular during COVID and is worth a mention here. Live coding techniques can certainly be worked into an OBS stream along with your music. I’m just going to list a few here:
Open Processing – A great place to see some p5.js sketches in action.
Jeremy’s Stream Tech Recommendation Links
Use these links to donate to the World Wildlife fund. I am not set up as an Amazon affiliate, so I make nothing from Amazon if you use these links. The small referral reward that they might provide is not worth the overhead to manage it.
Victure 1080P Webcam
(I have two of these. The SC30 is better in my opinion than the SC35)
25 inch Flexible Jaw Long Arm Swivel Clamp Clip Mount Holder Stand (I have two)
Neewer Cool Ballhead Arm Multi-Functional
Double Ball Adapter (I have two)
Anker [Upgraded Version] USB 3.0 SuperSpeed 10-Port Hub (I use two of these. Yes, really.)
This unit is a bit dated, and it can be quirky, but works for my purposes (bringing HDMI or Composite into a Macbook). One downside is that you cant use both HDMI and Composite simultaneously.
My biggest recommendation to electronic musicians about what NOT to buy for streaming:
Do NOT buy a GoPro Camera! If you have one already, great – try to use it (with emphasis on “try”)
Based on my experience these last 6-8 months, GoPros are a complete waste of time for streaming. Two reasons:
1) The GoPro USB Webcam feature (which only came out in July 2020, with some updates in Sept/Oct) is still in beta, and is only available for Hero 8 and 9. The beta has bricked my Hero 8 Black a couple times, wasting hours of my time both online with support and on my own.
2) GoPro native streaming (available on Hero 7-9) is another matter, but requires WIFI. That goes against my mantra of no WIFI for streams. The native streaming option on GoPro also means you can not combine with other graphic elements in OBS unless you stream to an RTMP server first, then bring that feed into OBS. Lots of hoops, and most people don’t have an RTMP server just laying around! As if that were not enough, the native streaming option means that I need to tie up my smartphone to run the GoPro app… that’s a non-starter because I need that device free (for emergencies or to monitor my stream).
And yes, I’ve been in touch with GoPro on all this (as many others have – just check their forum!), and they have simply not delivered. So until they do, save your money and don’t believe the hype! Believe me, as soon as I have an update and see this working, I’ll post it!