• Skip to main content

Sean M. Carnahan

Notes from the IT Field

Uncategorized

Nov 05 2020

Church Live Stream Using OBS, NDI, and EasyWorship

When the world went crazy back in March, EVERYONE scrambled to figure out how to get their content online in a “socially distant” way with mixed results. My church has been recording our services and airing them on a local cable channel for many years, so the easy answer was to pre-record our services and post them online. We already had all the equipment to do that. So for about 9 weeks, that’s what we did.

We recorded the song service and preaching in different segments and stitched it all together in post-production. This seemed to work well, but it took several extra hours to record all the takes (live services are much more forgiving than video), stitch it together in Adobe Premiere, and then caption the song lyrics over the video.

When we decided to begin meeting in person again, our leadership decided that we should live stream our services for those who couldn’t make it in person. We also wanted to provide overflow seating in a separate building.

There are many different ways to skin this cat, but after some research, I decided that funneling everything through a computer would give us the most flexibility.

Live Stream Software

Having done some live streaming before for my day job in IT, I had used Open Broadcaster Software (OBS) Studio for live streaming events before, so this was a natural choice for me. OBS is a powerful tool for preparing, modifying, and mixing video sources for broadcast.

Our church already had a presence on YouTube, so this was the logical place for us to stream our services. At some point in the future, I would like to stream to Facebook Live as well.

Live Stream Hardware

I purchased a standard Windows PC with 8 GB of memory and a solid-state hard drive for this project. This computer doesn’t have to be super powerful if you’re dedicating it to this task.

To capture the audio and video, I chose to use the Elgato Cam Link 4K. These simple USB capture cards are well-reviewed and relatively inexpensive; however, they were difficult to source at first. I was fortunate to find some on Amazon a few weeks after I began searching.

I also purchased an Elgato Stream Deck control surface to make this setup as simple as possible for my volunteers. This array of virtual buttons allows us to send commands to OBS quickly and efficiently. In fact, we do not have a keyboard hooked up to this computer. We have buttons dedicated to launching OBS, switching scenes, starting the live stream, and shutting down or restarting the computer.

What about the lyrics?

I wanted to overlay the lyrics on top of the video for our online viewers. That’s where Easy Worship comes in. We’ve been using Easy Worship for many years, so it only made sense to integrate it somehow into this stream.

I had purchased an additional Cam Link with the intention of bringing the front of house output from Easy Worship into OBS directly, but laying the full slide on top of the video wasn’t the look I was going for. I knew that if I could get the foldback display into OBS, I could remove the solid black background using a color key filter (think green screen).

I didn’t want to purchase another Cam Link or figure out how to duplicate the foldback display. After a little more research, I found that I could capture both of the Easy Worship screens and transport them over the network using a small application called vMix Desktop Capture for NDI.

Along with the NDI plugin for OBS, we can add any screen we want from Easy Worship as a layer in our stream. After cropping the clocks and the preview line from the foldback view and removing the background, the lyrics transparently float on top of our camera feed. We added a transparent gradient image to give the lyrics a little bit of separation, and we are satisfied with the results.

We quickly learned that there is a slight delay anytime you pipe video over the network, so the volunteer on Easy Worship has to be on top of the slide transitions for the lyrics to be on time for the stream. We also learned that using NDI to send videos being played in Easy Worship did not yield good results, so we continue to use the HDMI and Cam Link connection for getting the front of house view into the stream.

What else can we do with NDI?

The NDI plugin for OBS also allows us to send an NDI stream of our program view. This stream can be captured and displayed on any device capable of receiving an NDI stream. We used this as a means to live stream to another building for overflow seating. While we could have used the YouTube stream, we wanted something a little more real-time. NDI offers a free set of tools that include the NDI Studio Monitor, which runs on a laptop and projector in our overflow space.

A Picture is worth a thousand words

Sometimes diagrams make things easier to understand, so I worked up this graphic to show all the connections.

This basically covers everything we’re doing for the live stream. If you have any questions, please feel free to email me at sean@carnahan.me.

Written by seanc · Categorized: Uncategorized · Tagged: Church Media, Easy Worship, livestream, NDI, OBS

Apr 01 2019

SSL Certificates, Lazy Programmers, and Lackluster Support

I get to the office on Tuesday morning and I see a message from the “manager” of our transaction system about an error she was getting with the software. The error led me to believe that the SSL certificate for the server had expired. I checked the web site for this particular service and, in fact, it had expired the previous afternoon (oops). So I dug up the documentation on setting up a renewed certificate for this software and got to work.

I renewed the certificate through GoDaddy – not our normal certificate provider, but that’s another post altogether – and installed it as described in the provider’s documentation. The web server was happy, but the services for the software would not start. After a little more troubleshooting I found that the certificate was “not yet valid” according to the software. I know the certificate is valid and I know I can’t change the date on the certificate, so the only thing left to do is to call their support.

I had a coworker call support and give them the low down as I was already late for a meeting. The agent double checked all my work and everything looked good. However, he did notice that the “Not Valid Before” date in the certificate was listed in GMT. He then informed us that this system has a known issue that basically ignores the timezone of the certificate and assumes that it is the local time zone of your server. So while the certificate was valid as of 8 am local time, their software would not see it as valid until after 1 pm. ACHIEVEMENT: BUG FOUND! The agent informed us that we would have to wait until after 1 pm for the software to begin working again.

I learned all this after returning from my meeting and obviously, this was not an acceptable answer. We can’t have a production system down half of the day. So I placed another call to support to try to get a resolution. I was connected to a second agent who quickly got up to speed on the situation, got in touch with the first agent, and provided me a “loaner certificate” so we could get the services back online.

I expressed my dissatisfaction with the way the ticket was handled and that their system does not calculate the time zone correctly, but was appreciative that he was able to quickly resolve the issue on the second call.

Lessons Learned:

  1. Don’t let your certificates expire.
  2. Renew your certificates and give them some “breathing room” before activating them.
  3. Don’t take no for an answer.

Written by seanc · Categorized: Uncategorized · Tagged: Certificate, Expiration, Expired, SSL, SSL Certificate

Mar 21 2019

Allow Me to Introduce Myself

My name is Sean Carnahan and I am an Information Technology Professional in a small town in Arkansas. Yes – Small town Arkansas has IT needs too. I’ve spent most of my career working in Higher Education and have moved through just about every aspect of IT.

My most recent and most focused role has been in the data center space. I have built and redesigned numerous data center spaces for my university. I’ve designed and deployed server systems to meet needs of our users. I have been heavily involved in the design and implementation of our VMware environment including vSphere, Horizon, vSAN, and SRM. I’ve managed backups using Veeam. I’m responsible for the backend infrastructure that runs all the systems required for the university’s business – all the stuff nobody thinks about unless it’s broken. My writings here are inspired by things I’ve encountered throughout my career.

I am a Christian, but by no means am I a perfect Christian (hint: there is no such thing). It humbles me to admit that I haven’t always been the best example of a Christian, especially in my work life. I’ve been short tempered and I haven’t always treated people with the love and respect every human deserves, but these are things the Lord has been working out in my life over the years. My prayer is that some of the content here might move you to love others and stand up for what you believe in.

I’d love to chat if you have questions about what you find here. You can email me (sean@carnahan.me) or find me on Twitter (@scarnahan)

Written by seanc · Categorized: Uncategorized · Tagged: Intro, Personal

© 2025 Sean M. Carnahan · sean@carnahan.me