Tip: Record HDMI camera output for $15

Horshack

Forum Pro
Messages
11,231
Solutions
28
Reaction score
12,594
Location
US
I've made a YouTube video on how to record HDMI video from your camera into your computer for $15 or less, up to 1080p 60fps. I'm also including the steps here for those who prefer to read rather than watch the instructions.

This has several purposes. First, you can use it to record the camera's menu system and Live View feed. This is useful if you'd like to share tips here on camera configuration and use. It's also useful when reporting problems, for example to demonstrate an AF tracking issue where the LV feed shows the AF tracking bounding box.

To share a video on the forum, upload it to YouTube and then use the "Insert Video" icon while writing a post with the link to the video. You can optionally mark the video as "unlisted" on YouTube so that it's not discoverable on YouTube by anyone performing a search.

Naturally you can also use this feature to record long-form videos from your camera directly into the computer. I'll be posting IQ comparisons between recording the HDMI feed on these cards vs internal video recording.

Lastly, can also use the HDMI feed as a webcam. Most camera makers including Nikon provide an optional Webcam driver that lets you use a USB-attached camera as a Webcam - however most limit the resolution to 720p or lower. The HDMI adapter shows up as a video input device that any third-party software will see, including apps like Zoom.

Here's the how-to:
  1. Buy the PiBOX USB 3.0 HDMI Capture Device currently sold for $15 on Amazon. To get an even cheaper card, search for "MS2130" on AliExpress.
  2. Download, install, and run OBS Studio
  3. Cancel the Auto-Configuration Wizard
  4. Go to the "Sources" pane and click "+". Select "Video Capture Device". Click "OK". Select the capture card from the "Device" dropdown. For "Resolution/FPS Type" choose "Custom". Set Resolution to 1920x1080. Leave FPS set to "Match Output FPS". Set "Video Format" to "YUY2" if available, otherwise pick MJPEG (compressed, lower quality than YUY2). Click "Use custom audio device", scroll back down and select the HDMI card from the list of Audio Devices.
  5. Click "Settings" in the "Controls" pane
  6. Click "Audio" and set all the "Global Audio Devices" to "Disable" to remove all audio sources other than the HDMI capture card.
  7. Click "Video" and set "Output (Scaled) Resolution" to 1920x1080. Set the "Common FPS Values" to either 30 or 60, whichever you prefer.
  8. Click "Output". Change "Output Mode" to "Advanced". Click the "Recording" tab. Set your desired output directory in "Recording Path". Set "Recording Format" to "MPEG-4 (.mp4)". Set "Video Encoder" to either one of the hardware encoders if available on your system (ex: NVENC for Nvidia), or to x264 to use the software-based encoder. Scroll down to "Encoder Settings" and set "Rate Control" to CBR. Set the Bitrate to 5000 Kbps, although you can experiment with higher/lower rates depending on the amount of motion/detail in your video. Click the "Audio" tab and set your desired bitrate in "Track 1". OBS requires you to always record an audio track so if you don't need audio just set the bitrate to a low value to keep its space usage to a minimum. Click "OK"
  9. Click "Start Recording" to begin recording video. Click "Stop Recording" to end.
If you'd like to grab/post a single frame instead of video you can use your operating system's built-in screenshot tool on the OBS Studio window showing your HDMI feed (Windows instructions, Mac Instructions).

And here is my instructional video demonstrating the above steps:



The IQ from these cards is quite good and the lag is very low. All of the inexpensive HDMI USB cards on Amazon are based on either the older MacroSIlicon MS2109 USB 2.0 chipset or MacroSilicon MS2130 USB 3.0 chipset. Avoid the USB 2.0 chip because it only supports 1080p 30fps and only compressed MJPEG output. Ignore the USB 2.0 cards that claim 1080p 60fps - it's a fake 60fps that inserts an empty frame every other frame. There's also an MS2131 chipset that adds HDMI passthru support and audio in/out.
 
Last edited:
Here is an IQ comparison of 1080p60 HDMI video captured with the $15 PiBOX (MS2130 chip) vs internal video on the Z6. WB set manually, base ISO, camera in movie mode set to 1080p60. HDMI was captured in OBS Studio using NVENC H.265 with a 10,000 Kbps bitrate. Both HDMI and internal video imported into Resolve, frame grabs obtained in color grading panel.

Animation: 1080p60 Internal vs HDMI Recorded, ColorChecker Image

Animation: 1080p60 Internal vs HDMI Recorded, Color Graphs

Effectively identical
 
thank you, very good to know. the listings for these hdmi capture devices very often contain contradictory or misleading information, now I know which chipset to look for, im gonna try get one of those from ali just for fun
 
Here is a measurement of full-system lag. This was performed by running a stopwatch app under Windows and mirroring the display to a second HDMI port on my video card, which I fed into the MS2160-based HDMI capture card, which is then fed back onto the display in a feedback loop with the OBS Studio window open. There are lots of moving parts here, including video adapter lag, refresh rate intervals, encoding lag, etc... So consider it a full-system capture lag, with the addition of the OBS playback of the captured video lag, which typically isn't done unless you're doing something strange like playing a video game to the HDMI capture feed.





The minimum full-system lag measured was 80ms. Here's someone else's measurement with the HDMI capture lag more properly isolated (49ms):

Video grabber MS2130: the good old MS2109 on steroids

For a little bit of video feedback loop fun, here's a video of my loopback setup while dragging around a window.
 

Attachments

  • 4428171.jpg
    4428171.jpg
    226.1 KB · Views: 0

Keyboard shortcuts

Back
Top