Introducing AV Monitor
Recently, I published a new Mac app called AV Monitor for free on the Mac App Store. It’s a simple utility I’ve always wanted, but I couldn’t find anything like it that fits my needs. AV Monitor lets you quickly view any AVFoundation video device (such as a webcam or capture card) at different supported resolutions and frame rates while also previewing the audio output.
The idea started when I wanted to use my HDMI Capture Card to play my Nintendo Switch and Nintendo 64 (equipped with N64Digital) at my desk. My monitors don’t have HDMI inputs, and I had this capture card on hand, so I thought there would be software to simply monitor the video and audio coming into that capture device. However, there weren’t any great options. QuickTime was my first thought, and it can do the basic job of previewing video and audio output, but it wasn’t ideal.
For my capture card, the only video format choices are vague “High” and “Maximum” quality options, so I don’t have a good indication of what the device’s resolution and frame rate are without recording (which is what QuickTime is designed for). Once I record a video clip, I can see that “High” means 1280x720 at 60 frames-per-second and “Maximum” means 1920x1080 at 30 frames-per-second. This showed me that “Maximum” is a bit of a misnomer because this capture card definitely supports 1920x1080 at 60 fps, as shown in OBS. Not being able to display the capture card’s maximum supported resolution and frame rate was enough for me to look for something else.
Speaking of OBS, that was the next option that came to mind. I’ve been familiar with it from streaming, and it seemed like it could get the job done. I can choose specific resolutions and frame rates, and I could tailor a whole lot more in terms of input format, color space, and video range. However, OBS seemed to be too much for what I needed. I certainly didn’t need the added complexity of arranging separate media elements onto a canvas to then render and display on my screen. Re-configuring devices wasn’t as simple as it could be, and there must have been significant latency introduced by the need to composite all of the elements onto a preview pane. While all of these tools are great for streamers, I wanted something more basic. Enter AV Monitor.
The goal for AV Monitor was to create a preview-oriented app that’s a bit more complex than QuickTime and a bit less complex than OBS. Having essentially no experience with audio and video programming, getting basic audio and video output with a few controls was be a great starting point for me to learn about the AVFoundation framework on macOS without being completely overwhelmed by a lot of details about audiovisual data and functions. On top of that, this was a great excuse for me to try out SwiftUI. Now’s probably a good time to mention that AV Monitor is written in SwiftUI (albeit with an AppKit wrapper for the video device output)!
In version 1.0, the biggest pain points were addressed. It has simple device selection and basic controls for resolution, frame rate, and volume. You can also open multiple windows to preview multiple devices independently! However, there’s still so much more that can be done. There could be more audio and video data displayed. What if it could record raw footage from devices at a desired resolution and frame rate? While I can’t promise when those features will arrive, those are a couple things I know I want to add. In the meantime, download AV Monitor for free on the Mac App Store today!