You want to capture HDMI on your computer? Got £10 spare?
Can you spot the difference between these two sticks?
So the other day I saw tweets flying around about a £/$10 USB 2 capture stick for HDMI. Then Jo aka concreted0g bought one and people started talking about it and I thought
"Yeah I'm gonna buy one for testing."
So I bought two from eBay, and they arrived. Like a kid on Christmas morning I tore into the packaging and plugged in the sticks. I connected them up to my X390 Thinkpad as a video source and my Dell 7010 was used to see the video via OBS. But what I saw was this...
Pi 4 video source 1080P test with OBS 5fps
Lenovo X390 as video source, 1080P test with OBS 5ps
Using OBS @ 1080p I get 5fps, 720p 10fps.— biglesp (@biglesp) June 16, 2020
Lenovo X390 Ubuntu 20.04
Frame rate and video is no good for capturing quality video / images. Shame :( pic.twitter.com/bz2CX8i3E7
Digging a little further
I wanted to learn more about these sticks, which are identical apart from the case on one has been assembled in reverse...you spotted that right?
Inside the case is a simple PCB with a chip hidden under a heatsink...
A Macro Silicon MS2109 is the chip which powers this device. I visited the Macro Silicon website and found...nothing for this chip. The latest version they have listed is the MS2106, used for analog video capture to USB.
This is the flow diagram for the 2106, I hazard a guess that the encoding section is similar as the MS2109 also outputs video as MJPEG.
What does Linux see?
Why was everyone else getting a nice 30 fps video stream?
I had a chat with Jo and he mentioned that he was using guvcview to capture the video on his Ubuntu machine. I already had that installed so I fired it up and wow, the frame rate was so much quicker. Still a little fuzzy but better.
I never put my blog posts behind paywall or pop ups because quite frankly that is annoying and prevents anyone from accessing the content. I will always keep my blog content free of charge. But I do ask that if you are able and willing, that you buy me a "coffee" as it helps me to pay for hosting this blog, and to buy stuff to hack from Poundshops / Dollar Stores / Aliexpress which are used in free projects and reviews on this blog. It is You dear reader who make this possible, and I am immensely grateful for your support.
Quick Comparison Video
I recorded four videos all using a Raspberry Pi 4 as the video source.
- USB 2 to HDMI 1080P via Open Broadcaster Software - 5 frames per second, fuzzy image.
- USB 2 to HDMI 1080P via guvcview - 30 fps, fuzzy image.
- Mirabox (USB 3) via Open Broadcaster Software - 30 frames per second.
- Mirabox (USB 3) via guvcview - 30 frames per second.
The two capture devices were the £10 USB 2 to HDMI stick, and my £70 - 80 Mirabox, which I use to capture video for work.
So how can I get a better quality with OBS?
This is subjective, but for me tweaking these settings gave me 30fps at 1080p in OBS.
Set the device config
In Sources double left click on the source which is your capture device.
Set the Video Format to BGR3 (Emulated)
Change the Resolution if needed.
Set the Frame Rate to 30.00
Set Color Range to Full
Make the image a little sharper
I wasn't too happy with the soft image, so I delved further into the settings for the source.
Tweak these settings and see what works for you and the video source you are trying to record.
Click on Settings and then Video
Change the Downscale Filter to Lanczos (Sharpened scaling, 36 samples)
Common FPS Values set to 30
click Apply and then Ok
Now the video should be sharper and with a higher frame rate.
For £10 this is a good USB to HDMI capture device despite the fuzzy / soft image. I wouldn't use it for work, but for casual use this will do the job.