Tip: Record HDMI camera output for $15

Horshack

Forum Pro
Messages
11,231
Solutions
28
Reaction score
12,594
Location
US
Here's a quick video I've made on how to record HDMI video from your camera into your computer for $15 or less, up to 1080p 60fps. You can also use the HDMI feed as a webcam. For those who don't like watching videos:
  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.


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's a quick video I've made on how to record HDMI video from your camera into your computer for $15 or less, up to 1080p 60fps. You can also use the HDMI feed as a webcam. For those who don't like watching videos:
  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.
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.
Why is this useful - recording HD on a computer? What am I missing? Honest question, really.

And for using cameras as web cams, for many cameras now you can just plug in a usb cable and get even 4K. No drivers or software needed.
 
Why is this useful - recording HD on a computer? What am I missing? Honest question, really.
  1. Recording camera menu system and LV feed for sharing configuration tips and for demonstrating problems in posts on the forums.
  2. Recording long-form video directly into the computer (easier workflow, no recording limits, cheaper media)
  3. Use as a webcam
And for using cameras as web cams, for many cameras now you can just plug in a usb cable and get even 4K. No drivers or software needed.
Most camera makers' webcam software driver supports a maximum resolution of 720p.
 
Are there any gamma or gamut shifts?
Here is an IQ comparison of 1080p60 HDMI video captured with the $15 PiBOX (MS2130 chip) vs internal video on the Nikon 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
 
I've found OBS to be susceptible to dropping frames when recording from the screen. This is one of the issues with using a computer to record - since Windows isn't a real-time operating system the OBS process may not be able to keep up if the computer has other tasks going on.

Has anyone tested this method of recording from an HDMI dongle to see if OBS can faithfully capture a 60fps video stream without dropping frames?
 
I've found OBS to be susceptible to dropping frames when recording from the screen. This is one of the issues with using a computer to record - since Windows isn't a real-time operating system the OBS process may not be able to keep up if the computer has other tasks going on.

Has anyone tested this method of recording from an HDMI dongle to see if OBS can faithfully capture a 60fps video stream without dropping frames?
I don't see any dropped frames capturing at 60fps. What are your system specs? What encoder are you using and bitrates? What filters, transforms, etc. if any are you applying in OBS?
 
I appreciate your clear instructions, but I have never quite been able to get OBS to work without glitches or scrambled settings. I've tried a few times, and the last time I just couldn't get it to reset a setting that should have done what I wanted, but didn't. I know people swear by OBS, but I'm looking for a more reliable way to record what is on the screen when I need it for one of my occasional software tutorials. It would also be great to record at 4K.

Glad to hear that OBS is working for you, but I have had nothing but head scratching and wasted time with it.
 
I've found OBS to be susceptible to dropping frames when recording from the screen. This is one of the issues with using a computer to record - since Windows isn't a real-time operating system the OBS process may not be able to keep up if the computer has other tasks going on.
I don't see any dropped frames capturing at 60fps. What are your system specs? What encoder are you using and bitrates? What filters, transforms, etc. if any are you applying in OBS?
I have an RTX 3060 card and OBS is set to use the "NVENC" hardware encoder. There are no transforms, it's just recording one of the my three desktop screens running at 1920 x 1080 resolution.

I haven't used OBS to record anything critical and so I haven't bothered doing any sort of deep dive on optimization.
 

Keyboard shortcuts

Back
Top