A lot was posted all over the internet about capturing HDMI output and whether CamLink is worth its $120 price tag since there are $20 alternatives out there. Trying to decide for myself I googled around and all I found were discussions on image/video quality, like this very informative video from Tech Audit TV:
What this (and similar videos) don’t go into, but what is as important, is what these dongles really do, because that’s where the rub is.
|Elgato Camlink 4k||China HDMI to USB dongle|
|does not do scaling of image||scales image to set size|
|passes through raw data stream||compresses data stream to MJPEG|
|PC side needs to process data rate at resolution and fps the camera sends it||PC side can request data at lower rate (resolution, fps)|
|Provides the actual camera fps||Provides own fps, you can select from a list, but for non-standard ones you are at loss|
So, what’s the difference really?
The HDMI carries the video signal as a bitstream, in which pixels are sent one by one, line after line, for each pixel its color is stored as a number in some predefined encoding. It is important to know, that while there are few different bit resolutions and ways to order data around, the basic thing remains constant: each pixel data is sent separately (I’ll leave the subsampling out for the sake of clarity), one by one, without some compression, so the formats can be converted from one to another by just ordering the bits around and/or doing some basic math on the data.
The important things that result from this approach are:
- The amount of data sent per second is huge. At 2160p25 in 8-bit depth (UHD) we are talking about ca. 5Gbps (620MB/s). Even 1080p25 is over 1Gbps. That’s quite a bandwidth to manage.
- The data, as it comes, comes ‘live’ at the resolution and timing as provided by the source. It’s not a compressed stream where you get a few frames in advance and the compression algorithms permit you to decode a lower-resolution image without decompressing the full resolution at once.
The USB supports sending video stream in a similar manner, but has much wider selection of available formats. You can package and send not only direct, raw pixel data, but also a compressed stream (avc, mpg2,…). This is for a good reason: The bandwidth of USB2.0 pegs at 480Mbps, which is not even enough for 720p25@8bit (needing 550Mbps).
USB3.0 lifts this limit by providing 5Gbps bandwidth. So with USB3.0 you could technically just re-wrap whatever comes over HDMI up to 4k25p (0r, with some subsampling, 4k30p) and be done with it.
This is what Elgato Camlink does.
Camlink takes the HDMI in in the format (resolution, pixel data depth etc.), repackages it and sends it down the USB3.0 lane. The only processing you may select is some color subsampling (you actually have no choice but to do so for 4k sources). Camlink basically does not process the image data, at most it reshuffles the bit order on pixel level and, if instructed to, drops some of the data on color to make bitrate fit through USB3.0.
This means, that if you send 4k video to the Camlink, it will ofer you this very same 4k data on your PC. If your PC can’t swallow uncompressed 4k, or can’t compress 4k on-the-fly, you are cooked. You have to set your source to the exact resolution you want to get as input on the PC. Some cameras are better, some are worse at downscaling their output. Setting a 4k cam to output 1080p because your rig can’t digest 4k directly may result in poor image, if the camera is no good at scaling. Also, it in some cameras it is not possible to output 1080p over HDMI while recording on card at 4k.
The chinese HDMI to USB converters
are built in a somewhat different way. They have a hardware video processor chip on the HDMI end, which means the stream is not taken in raw, but gets frame-level preprocessing. It gets, for example, scaled to the resolution you choose on you computer. You feed it 4k? The scaler will take care of it and downscale to selected resolution. Color, sharpness, contrast etc. can also be adjusted at this step. The image data then gets compressed and the compressed stream is sent over the USB2.0 interface.
This has, of course, negative impact on latency (all this processing needs to happen, especially lossy compression is not immediate), often on quality (but not as much, see the video I linked above), but most importantly the PC does not receive an uncompressed stream with parameters as set by the sending camera, but rather a compressed stream at resolution and rate configured by the PC software. And, to be honest, the scaler in these cheapo dongles is better, than built into many of the dSLR cameras. This means that for machines with lower processing power going over chinese HDMI to USB converter may actually be the BETTER way than trying to use Camlink and lowering in-camera settings.
Downside is, some software doesn’t like MJPG streams, for example to capture directly to EDIUS it is necessary to get a raw stream. While China dongles do provide this, due to bandwidth limit of USB2.0 you can get max SD resolution (D1) at usable framerates. At 1080p you get a whopping 2 fps. Two. I didn’t drop a digit there.
Another downside is that the China dongles seem to have a fixed list of framerates they output. If you are on 30p, you won’t notice, but PAL folk will find it funny to feed 25fps in and get only 30fps offered on digital end.
But, as long as your software is happy with MJPEG, and the fps selection meets your needs, there are lots of scenarios where the china solution is going to cause you less hassle and headache.
Hope you find it useful!