Introduction
Recently, I wanted to record some Nintendo Switch gameplay. Since the built-in 720p recording feature is garbage for anything other than immediate highlights, I figured I'd sink some money into a device that can capture a full 1080p feed and record it.
I looked at some options. A close friend of mine uses an
Elgato HD60
S+ to record gameplay and stream it over Discord. So it was an
appealing choice after seeing it in action. But I wanted to future-proof
myself. So I decided to get the
Elgato 4K60
S+. The appeal here is that it can act like the HD60 S+, but can handle
4K HDR. It also is capable of operating on its own via recording to an SD
card. This makes it a very convenient choice if you want to record
something without having a PC around. Also, I don't have a free PCIe
slot for some of the other choices Elgato offers.
This is not a review. It's more of a technical breakdown of the device. I had a lot of questions about such a device. Maybe my Google-fu was off. But I couldn't find some specific information online, and I'm pretty picky about a capture solution. Not just because I am used to an automated "capture-render-upload" procedure for clips, but because I have such a strict sense of what I want. I would love to have my usual lossless video and audio. But I also would like the convenience of recording to an SD card. This kind of a device allows me to treat an SD card like a "footage cartridge" and automate content. So, can it do that?
The Basics
We'll start with the basics. For context, here's the rear side of the capture card:
I won't assume you know anything about this device. It is a capture "card" that lets you capture video via HDMI-IN. It will pass this through an HDMI-OUT port into a monitor. In other words, it sits in-between your device and your display and can record the input. This is how nearly every capture card works. It comes with all of the necessary cables in the box, and the connectors are golden.
It has 2 modes: PC Recording and Standalone Recording:
- PC Recording - Records to PC via the 4K Capture Utility, available on Elgato's website. This obviously requires a PC, but allows you to record without an SD card. Your only limit is your PC's drive space. This is indicated with a blue light.
- Standalone Recording - Records to an SD card. Only available when the data port is not plugged into a PC. This is indicated with a red light.
That Standalone Recording mode is probably why this product is significantly more expensive than the Elgato 4K60 Pro. Plus it has an onboard HEVC encoding chip, which encodes an h.265 stream into a video container with VBR (Variable Bitrate) as the mode. I'll get more into that in its own dedicated section.
PC Recording (SDR)
The Obvious Stuff
This is the easier of the two modes. So we'll break it down first. To start, you will need the 4K Capture Utility from Elgato's website. You will also need a driver to allow the hardware to communicate. If you are lucky, it should just auto-install. This was not the case for me.
When plugged in, the 4K Capture Utility will mirror your input display with around 200ms - 250ms of delay. The audio will also go out this way. If you are streaming this display over to Discord, you can set the audio output to a dead virtual device to mute it for yourself, while your Discord friends can still hear the stream.
The delay makes sense. There is a lot of steps that go into your PC getting that feed:
- HDMI-IN captures video feed, split off to HDMI-OUT to the monitor
- Encodes via H.264 for SDR, H.265 for HDR
- Sends over "DATA" port (USB-C) to PC
- Elgato software communicates with the driver, gets Video Feed, decodes the video
- Shows in 4K Capture Utility
Game Capture 4K60 S+
in settings:
You cannot change the encoder to your GPU unlike the HD60 S+. The encoding is done on the 4K60 S+ no matter if you are using PC Recording or Standalone Recording. The bitrate range will change based on your resolution and display bit-depth. So an HDR10 display will have different bounds. So will a 4K display. If you want more information on maximum bitrate, Elgato states that the maximum via H.264 is 200 mbps, whereas the max for H.265 is 140 mbps. That is megabits per second. The reason the bitrate is lower for H.265 is because "theoretically" only half the bitrate is needed to produce around the same percieved quality compared to H.264. For more information on the bitrates, Elgato has you covered. Impressively, Elgato also dodges double-encoding by dumping the video feed to a file when you record. It doesn't re-encode it.
If you want more information on the interface, Elgato conveniently has a page for it too.
Recording a video: Files
You can specify a folder in the settings. When you record a video, it will be sent to that folder. Each recording is specified a folder. And in that folder will be some files:
Okay, let's break this down. Each recording has an AAF, JSON, and MP4 file associated with it. The video is obviously the most important part. But the other supplemental data will be useful for editing or getting information about the recording in the future.
Details are as follows:
-
AAF -
This is a binary file. It can't be opened as a text document.
AAF stands for Advanced Authoring
Format. It contains information that should be helpful if
you want to open the clip in Adobe software like Premiere. I am
a
FFmpeg
user. I will not find out more about this file.
-
JSON -
Data file which holds metadata on the recording. It has details
like video resolution, frame rate, ID, tags, title, duration,
timestamp of creation, capture card information, and even the
encoder settings used to compress the video down. From the look of
things, it looks like a fork of FFmpeg. The file can be opened in
VIM or Notepad. In fact, here it is:
JSON File (sample.json)
You can extract the information from{ "Capture Software":"4K Capture Utility", "Capture Software Version":"1.7.8.4914", "Clip Content Type":1, "Clip Number":0, "Clip Start Time":495824034, "Creation Date":1666862101, "Custom Data":"", "Encoder":"GC 4K60S+", "Encoder Settings":"{\"aspectRatio\":{\"height\":9.0000000000000000,\"width\":16.000000000000000},\"bitrateBps\":42755686,\"cbr\":true,\"colorPrimaries\":709,\"commandLine\":\"\",\"compression\":1,\"compressionInfo\":\"EGAVVideoCompression { None, H264, HEVC, Auto }\",\"constQpFor4kHevc\":false,\"framerateFps\":60.000000000000000,\"gopLength\":15,\"gopStructure\":1,\"gopStructureInfo\":\"GOPStructure { I, IP, IBP }\",\"horizontalCropping\":0.0000000000000000,\"level\":42,\"maxBitrateBps\":42755686,\"profile\":2,\"profileInfo\":\"EGAVH264Profile { Baseline, Main, High }\",\"qualityPreset\":0,\"qualityPresetInfo\":\"EGAVVideoEncoderPreset{ Fast, Balanced, Best }\",\"size\":{\"height\":1080.0000000000000,\"width\":1920.0000000000000},\"verticalCropping\":0.0000000000000000,\"videoRange\":0}", "File Size (bytes)":1290902939, "Game":"自分のすごいゲーム", "Location":"C:\\Users\\idest\\Videos\\4KCapture\\自分のすごいゲーム\\2022-10-27 05-15-01 - 自分のすごいゲーム - 自分のすごいキャプチャ\\自分のすごいゲーム - 自分のすごいキャプチャ.mp4", "Metadata Version":5, "Original Location":"C:\\Users\\idest\\Videos\\4KCapture\\自分のすごいゲーム\\2022-10-27 05-15-01 - 自分のすごいゲーム - 自分のすごいキャプチャ\\自分のすごいゲーム - 自分のすごいキャプチャ.mp4", "Rating":-1, "Recording ID":"AD3BAEC0-EB1A-43D5-9E25-F79E9FDDDE4E", "Requires Trimming":false, "Tags": [ "すごい", "ゲーム" ], "Timeshifted part (usec)":0, "Title":"自分のすごいキャプチャ", "Video Duration (usec)":245516650, "Video Frame Rate":60.000000000000000, "Video Size":"1920x1080" }
"Encoder Settings"
easily by running some JavaScript, likeJSON.parse("THE_DATA");
. It's pretty easy to figure out what everything is when you see it all decoded.
- MP4 - This is the video content. Obviously it's going to be the largest file in the folder.
Recording a video: MP4 file details
Video content being stored in the MP4 makes me curious what's going on. So it gets its own section here. Here's an FFmpeg dump of the information stored in the file:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '自分のすごいゲーム - 自分のすごいキャプチャ.mp4':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V M4A mp42isom
creation_time : 2022-10-27T14:15:01.000000Z
Duration: 00:04:05.53, start: 0.000000, bitrate: 42061 kb/s
Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 41692 kb/s, 60 fps, 60 tbr, 60k tbn (default)
Metadata:
creation_time : 2022-10-27T14:15:01.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : H.264/AVC
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2022-10-27T14:15:01.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream #0:2[0x0]: Video: png, rgba(pc), 720x405 [SAR 3779:3779 DAR 16:9], 90k tbr, 90k tbn (attached pic)
There are 3 streams here:
-
Video - In this case, H.264, yuv420p (tv, aka Limited colour
range), 60 fps, 41.6 mbps bitrate. The bitrate seems to match up
with the information provided in the JSON file,
"bitrateBps": 42755686
, which is almost 42.7 mbps. This is overkill for a 1080p video, so it's good.
-
Audio - AAC (LC). Stereo, 317 kbps. This is the exact
same as the HD60 S+. It is at 48,000 Hz, which is proper. It's
not lossless, but it's pretty good. Here's a spectrogram of it:
It's important to note that the spectrogram hits 24k some of the time. All other times, it stops at around 20k. I am not going to start a fight on the Internet about it. I'm an audiophile but I think for the casual person who just wants to get a clip out there, this really is good enough for no one to care about.
-
Thumbnail - This shows up as the thumbnail in Windows
Explorer, as shown in a screenshot above. For a 1080p recording,
this is a 720x405 PNG that is simply one of the first frames of the
video at a reduced resolution. You can see the differences here:
Thumbnail (720x405) Full version (1920x1080)
The video is good enough to just upload to YouTube if you really wanted to do that. The PC recording option is quite a convenience if you want to create some content and upload it instantly. And if you want to edit it, you are easily able to do that too.
PC Recording (HDR)
The differences
This capture card is capable of capturing HDR10 content. So I figured to test that alongside SDR content. It is pretty similar to SDR when done via PC Recording. So this will be quick. Unfortunately, this card only supports HDR10. That means it doesn't support HDR10+, Dolby Vision, etc. They are out of the question.
I have an HDR10 monitor. That's convenient. That means that I can chuck an HDR10 signal at this card. When you do this, the 4K Capture Utility will accurately reflect that:
The settings menu will adjust accordingly to it:
It makes it pretty clear that it will be using "HEVC", as it states it there. This was not present in SDR mode. Whenever recording, it will not show the HDR mark in the middle, only stating that the source is actually HDR. It's a little misleading. But it's true.
After doing a recording, the following file dump happens in the folder, the same way as before:
It's kind of the same as the SDR recordings. Once again, here's a JSON file dump:
{
"Capture Software":"4K Capture Utility",
"Capture Software Version":"1.7.8.4914",
"Clip Content Type":1,
"Clip Number":0,
"Clip Start Time":4737031496,
"Creation Date":1667082412,
"Custom Data":"",
"Encoder":"GC 4K60S+",
"Encoder Settings":"{\"aspectRatio\":{\"height\":9.0000000000000000,\"width\":16.000000000000000},\"bitrateBps\":44865945,\"cbr\":true,\"colorPrimaries\":2020,\"commandLine\":\"\",\"compression\":2,\"compressionInfo\":\"EGAVVideoCompression { None, H264, HEVC, Auto }\",\"constQpFor4kHevc\":false,\"framerateFps\":30.000000000000000,\"gopLength\":15,\"gopStructure\":1,\"gopStructureInfo\":\"GOPStructure { I, IP, IBP }\",\"horizontalCropping\":0.0000000000000000,\"level\":42,\"maxBitrateBps\":44865945,\"profile\":2,\"profileInfo\":\"EGAVH264Profile { Baseline, Main, High }\",\"qualityPreset\":0,\"qualityPresetInfo\":\"EGAVVideoEncoderPreset{ Fast, Balanced, Best }\",\"size\":{\"height\":2160.0000000000000,\"width\":3840.0000000000000},\"verticalCropping\":0.0000000000000000,\"videoRange\":1}",
"File Size (bytes)":415160061,
"Game":"自分のすごいゲーム",
"Location":"C:\\Users\\idest\\Videos\\4KCapture\\自分のすごいゲーム\\2022-10-29 18-26-52 - 自分のすごいゲーム - 自分のすごいキャプチャ\\自分のすごいゲーム - 自分のすごいキャプチャ.mp4",
"Metadata Version":5,
"Original Location":"C:\\Users\\idest\\Videos\\4KCapture\\自分のすごいゲーム\\2022-10-29 18-26-52 - 自分のすごいゲーム - 自分のすごいキャプチャ\\自分のすごいゲーム - 自分のすごいキャプチャ.mp4",
"Rating":-1,
"Recording ID":"6EBD485B-A9B8-4B40-ABBB-188FFD0B55D1",
"Requires Trimming":false,
"Tags":
[
"すごい",
"ゲーム"
],
"Timeshifted part (usec)":0,
"Title":"自分のすごいキャプチャ",
"Video Duration (usec)":139533300,
"Video Frame Rate":30.000000000000000,
"Video Size":"3840x2160"
}
Some notable changes are things like resolution, obviously. But also the
colorPrimaries
chanes from bt.709 to bt.2020. This is
important because it's how HDR10 is even possible. Also
compression
is set to 2
, which stands for
HEVC
.
As for the video itself, it comes as an MP4. Expected. But that's just the container. What about the actual info? Here's an FFmpeg dump:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '自分のすごいゲーム - 自分のすごいキャプチャ.mp4':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V M4A mp42isom
creation_time : 2022-10-30T03:26:52.000000Z
Duration: 00:02:19.53, start: 0.000000, bitrate: 23802 kb/s
Stream #0:0[0x1](eng): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23411 kb/s, 30 fps, 30 tbr, 30k tbn (default)
Metadata:
creation_time : 2022-10-30T03:26:52.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : H.265/HEVC
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2022-10-30T03:26:52.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream #0:2[0x0]: Video: png, rgba(pc), 720x405 [SAR 3779:3779 DAR 16:9], 90k tbr, 90k tbn (attached pic)
Notable differences are that the video codec now shows as
hevc
rather than h264
. The pix_fmt
appears as yuv420p10le(tv, bt2020nc/bt2020/smpte2084)
. The
resolution, obviously, is 3840x2160. This is 4K / 2160p. The audio encoding
procedure isn't affected here. It's the exact same as the SDR variant. I
don't see why audio would change when the only component that should change
is the video.
We can squeeze a little more information out of the file though by loading it into VLC and viewing the codec information. To my surprise, it actually has HDR10 Primaries information! This includes red point, green point, blue point, and white point:
This information is known as the master-display
information
and is used for helping other devices with different displays "calibrate"
colours to accurately show on their device. I actually have a blog post
that provides more information on this:
"A software 'solution' to recording HDR10 via Dxtory & FFmpeg".
The way I tested outputting HDR was to go to a YouTube video in my archives that I know is HDR to see how it performs. I loaded up some Modern Warfare II Beta gameplay I captured in HDR10. The lighting was accurate. It properly displayed in HDR10 in the 4K Capture Utility video. But other than the video, the rest of the pixels looked very greyed out. This is normal.
In English: Plug in HDR10 signal = It gets it. Video is HDR10. And it actually is HDR10.
Standalone Recording
The Obvious Stuff
The selling point of this product is that it's portable. Whenever you plug
in an SD card, the Elgato 4K60 S+ will automatically create a directory
structure in a local workspace on it. This workspace is in the root
directory as a folder named Elgato
. This folder has a specific
structure where all of your recordings will go to. The default files it
creates can be viewed here:
ELGATO_4K60_S_DEFAULT.tar.xz.
For documentation's sake, 1 directory and 2 files are created:
- Videos - A directory that stores your video files... Duh.
- ReadMe.URL - A shortcut to https://links.elgato.com/l/4k60shelp_hdr_sd_card_recording.
- Settings.txt - A text file that stores settings for configuring video and audio settings. This substitutes the 4K Capture Utility's settings. This is what we will go in depth down below about.
Settings.txt, INI configuration
Let's look at Settings.txt
. This file is an INI file with the
"txt" extension. Here's a dump of the default file that is put on the SD
card for the first time:
# ========================================
# 4K60 S+ - Settings for SD Card Recording
# ========================================
# More info on https://links.elgato.com/l/4k60shelp_hdr_sd_card_recording
# FILE FORMAT
# ----------------------------------------
# ExFAT is the recommended file system for SD cards.
# Recordings will be in an .mp4 format with AAC audio.
#
# FAT32 formatted SD cards must split recordings into 4 gigabyte segments due to file system limitations.
# To allow smooth combination of segments in editing those will be in .mov format with PCM audio.
#
# When EGC_RECORDING_FORMAT_MKV is set =1 recordings saved in the .mkv format.
# Recordings saved in the mp4/mov format will be unrecoverable if the file cannot be finalized in cases where the SD card is removed before the recording is done or power is lost.
# recordings in the mkv format can be used even when the SD card is removed or power is lost before the recording is finalized. Note that not all video editors support .mkv files.
EGC_RECORDING_FORMAT_MKV=0
# ENCODER SELECTION
# ---------------------------------------
# Select between AVC/H264 and HEVC/H265 video encoding.
# H265 achieves the same quality as H264 but with 30% less bitrate on average.
# To record HDR video, leave selection on 0 or enter 2 to force H265 recordings, even with an SDR signal.
#
# 0: automatic - H264 for SDR content, HEVC/H265 for HDR content
# 1: H264 - note that this will disable HDR
# 2: HEVC/H265
EGC_VIDEO_ENCODER=0
# RECORDING BITRATE
# ----------------------------------------
# Set this no higher than your SD card's write speed.
#
# NOTE: KBIT are KILO bit, so EGC_MAX_KBITRATE=140000 is 140Mbit/sec.
# 80Mbit/s is the max for many SD cards (labeled V10 which means 10MByte/s).
# If the label on the SD card says U1 then it likely can do 10MByte/s too.
# More info: https://www.sdcard.org/consumers/choices/speed_class
#
# 4K60 S+ records using variable bit rate. The recording may use a lower bit rate than set in the settings if there is low motion.
# Sets the max bitrate for the given vertical resolutions.
EGC_MAX_KBITRATE_2160=80000
EGC_MAX_KBITRATE_1080=60000
EGC_MAX_KBITRATE_720=40000
# AUDIO INPUT SELECTION
# ----------------------------------------
# Select the audio that will be recorded. Recordings can be made with HDMI audio, analog line-in audio or combining both.
# Recording combined audio records HDMI and line-in to one file. The audio cannot be split at a later time.
#
# 0 = HDMI
# 1 = line in
# 3 = HDMI+line in
EGC_AUDIO_INPUT=3
# LINE-IN VOLUME LEVEL
# ----------------------------------------
# Set the volume level of the line-in. If unsure about incoming audio level, leave at default of 176. Minimum value 0, max value 176.
EGC_AUDIO_VOLUME=176
We'll go through each of these options.
Container Format (MKV, MOV, MP4)
EGC_RECORDING_FORMAT_MKV=0
This option changes the container that holds the video and audio. If
set to 1
, then the video will be an MKV file regardless of how
the SD card is configured. If it's 0
, then the file depends on
the following:
-
If your card is FAT32, you get a MOV file with the video and
audio. The video codec is determined by another option. The audio
is PCM (
pcm_s16le
/ lossless). This video is split into 4 GB chunks if long enough. - If your card is exFAT, you get an MP4 file with the video and audio. The video codec is determined by another option. The audio is AAC (LC). The video is a single file, always.
In terms of video, this setting does not have any effect on video quality. It is just a container. It just holds the video and audio stream. You can easily move a video to another container without losing any quality or re-encoding. If anyone tries to compare quality between an MP4 and an MKV or MOV, they are lying.
The MKV file produced will have the same codec specifications as the MP4 and MOV files would have had. So if you record an MKV file on an SD card formatted as FAT32, you will get lossless audio and split up MKV files into 4 GB chunks. For exFAT, you will get AAC (LC) audio and a single huge MKV file.
I highly recommend this be 1
. The common description I hear is
that MKV is "corruption-resistant". And this is true. But there's more
reasons to keep an MKV over the other formats. The main argument I would
make is that it has no codec restriction. You can throw anything
into an MKV file and it just takes it. And since it's just a container, you
can extract those streams and throw it into a video editor easily. It's an
archivist's dream. Meanwhile, without experimental settings, you cannot
record lossless audio into an MP4 file. It is restricted in what video and
audio stream can go into it.
I'll go more in depth about this whenever I do a more detailed analysis of exFAT and FAT32 formatted SD cards down below. And I will provide an application that I wrote, as well as some command line solutions to make dealing with footage on the SD card easier.
Video Codec
EGC_VIDEO_ENCODER=0
Simple enough. Keeping it at 0
will make the codec depend on
the bit-depth of the display the capture card is connected to. In theory,
this means:
- HDR display - H.265
- SDR display - H.264
Setting this to 1
will force H.264, and no HDR. Setting it to
2
will force H.265. Personally, I recommend 2
as
the setting here.
Bitrate Control
EGC_MAX_KBITRATE_2160=80000
EGC_MAX_KBITRATE_1080=60000
EGC_MAX_KBITRATE_720=40000
Recommended theoretical maximum bitrate for videos at a specified vertical
height. Specifically, a 720p video, a 1080p video, and 2160p (4K) video's
bitrate. Use math. This is Kilobits Per Second. I do not have a
recommendation on these settings. I think the defaults are fine.
I max them out with the intention of hitting a point of diminishing return. Then running it through a better encoder to compress it better. It's double-compression, but I trust libx265 more than any real-time encoder.
Unless I read something wrong, you also do not need anything better than a V30 SD card to run on this device. Proof-by-math.
Audio Input
EGC_AUDIO_INPUT=3
The device has an 3.5mm AUX IN at the front. And you can choose what audio
will be in the final video file. This is very basic.
0
- HDMI Audio only1
- 3.5mm AUX IN only3
- Both
3
would mean that the two audio
sources are merged together. And they cannot be split.
And unlike
one very specific scenario, there's no cute tricks around this with
standalone recording. However, PC recording does support separation.
Once again, I don't have a universal recommendation on this. I prefer to
edit voice in post. So I set this to 0
. But that audio jack
has a whole variety of uses. Since your mileage may vary, set it as you see
fit.
Volume
EGC_AUDIO_VOLUME=176
It's volume. 176 is the maximum. 0 is the minimum.
Capacitive Touch Recording Button
Standalone Recording does not have a GUI. It operates completely on the device. The button used to record is at the very centre of the device. It is capacitive, so you won't get feedback for knowing whether you pressed it or not. Instead, it has 2 lights around it to tell you the status of it.
If the dot in the centre is lit, it is not recording.
If the ring is blinking, it is recording.
If the dot is blinking, the recording is done. But DO NOT eject the SD card. It is finalising the files to the SD card. This should usually take a few seconds.
For more information of the status lights, see Elgato's page on it.
SD Card Recording (exFAT)
As the documentation states, recording to a card formatted as exFAT will record a video in an MP4 file with lossy AAC (LC) audio. This is true, as the FFmpeg dump of some test footage reveals:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4K60_S+_002_001.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.12.100
Duration: 00:01:16.50, start: 0.000000, bitrate: 60090 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv), 1920x1080 [SAR 1:1 DAR 16:9], 59948 kb/s, 60 fps, 60 tbr, 60k tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
If the settings force an MKV file instead, that MKV file will have a video
of equal quality. Same for audio. The codecs will be the exact same.
Interestingly, it also marks the language of both streams as
und
(Undefined) rather than the default eng
. This
was recorded with the default 60000
as specified bitrate. And
the bitrate of this video is very close to it, being at 59948 kb/s.
The audio is actually a huge problem. Unlike the PC recording where the AAC (LC) bitrate was at 317 kb/s, it's at 160 kb/s here. Here's a spectrogram of it:
There's more to audio quality than just looking at the spectrogram though. And unfortunately the losses here are around the same as a 128 kb/s MP3 file. That's pretty trash, and it's one you would actually notice. Again, I am not here to start a fight on the Internet about audio quality. If this is fine to you, take it. I am just documenting what the card does. What bothers me is that this isn't configurable.
The videos are stored in /Elgato/Videos
. They are named in the
following way:
4K60_S+_001_001.mp4
4K60_S+_002_001.mp4
4K60_S+_003_001.mp4
There are two sets of 3-digit numbers. The first set indicates the boot
count. So if you unplug and replug the 4K60 S+ back in, this number
will increment by 1. You can think of this like a "session" ID if you do
all recordings on a single power cycle. When the device boots, it will
traverse files to find the next unused count and use it. So if you had a
session of files with 4K60_S+_013_*
and then delete them,
the device will just choose that number again and record to it.
The second set indicates the recording count. The first video will
be 001
. The second video will be 002
, and so on.
SD Card Recording (FAT32)
Recording to a card formatted as FAT32 will record a video as a MOV file with lossless PCM audio. Once again, here is an FFmpeg dump of some test footage:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4K60_S+_001_001.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf58.12.100
Duration: 00:05:57.90, start: 0.000000, bitrate: 51410 kb/s
Stream #0:0[0x1](eng): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv), 1920x1080 [SAR 1:1 DAR 16:9], 49866 kb/s, 60 fps, 60 tbr, 60k tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : FFMP
Stream #0:1[0x2](eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Let's not worry about the video track. If you want information on that,
it's the same as exFAT's handling of it. But let's take a look at the
audio. It's lossless 16-bit 48khz. Here's a spectrogram:
Again, there's more to audio quality than a spectrogram. But you can't beat perfect. Game assets are probably compressed too. This would explain some cutoffs at around 20khz. But there's no compression on Elgato's side, as it is just doing a direct copy of the audio that it gets, completely unprocessed. The benefit of this is that you have the source audio and can choose how to compress it in post. More flexibility is always nice.
The videos are stored in /Elgato/Videos
. They are named in the
following way:
4K60_S+_001_001.mov
4K60_S+_002_001.mov
4K60_S+_002_001-002.mov
4K60_S+_002_001-003.mov
4K60_S+_002_001-004.mov
4K60_S+_003_001.mov
There are two/three sets of 3-digit numbers. The first set indicates the
boot count. So if you unplug and replug the 4K60 S+ back in, this
number will increment by 1. You can think of this like a "session" ID if
you do all recordings on a single power cycle. When the device boots, it
will traverse files to find the next unused count and use it. So if you had
a session of files with 4K60_S+_013_*
and then delete them,
the device will just choose that number again and record to it.
The second set indicates the recording count. The first video will
be 001
. The second video will be 002
, and so on.
The third set indicates the segment count. FAT32 has an internal
restriction of 4 GB per file. Thus, if you record a long video, Elgato will
split the video into several files of 4 GB each. The first video will not
have a segment counter. The second video will have a -002
in
its name to indicate that it's a continuation. Every part after that will
do the same. In the file listing example above, you can see that
4K60_S+_002_001.mov
is split into 4 parts. Sometimes, you will
see an a
at the end of the filename. This indicates failure on
the device, and it dumped whatever remaining video feed into this file.
Usually, it is not a perfectly cut segment.
You can throw these into a video editor and line them up fairly easily. But if you want to merge all of them without any loss of quality as an MKV file, this can be done via concatentation in FFmpeg:
STEM="4K60_S+_014_001"; ls -1tr "$STEM"* | sed "s/^/file '/;s/$/'/" > "__concat.txt"; ffmpeg -f concat -safe 0 -i "__concat.txt" -map 0 -c:v copy -c:a flac -compression_level 12 ~/Desktop/"${STEM}.MKV"; rm "__concat.txt"
Copy and paste. Change the value of STEM
to be the video you
want to merge into a single file.
Are you a video editor? You might want an MP4 then. No worries, this will create 2 files: A combined MP4, as well as a WAV file that you can import into After Effects or Vegas:
STEM="4K60_S+_014_001"; ls -1tr "$STEM"* | sed "s/^/file '/;s/$/'/" > "__concat.txt"; ffmpeg -f concat -safe 0 -i "__concat.txt" -map 0:v -c:v copy ~/Desktop/"${STEM}.MP4" -map 0:a -c:a copy ~/Desktop/"${STEM}.WAV"; rm "__concat.txt"
Both of these commands have zero loss in quality and are very fast. They run at thousands of FPS. So getting footage off of the card is easy.
CN_4K60S+, a recording manager
I set my SD card to FAT32 because I'm an archivist who wants lossless audio. Since my friend bought the 4K60 S+ too and we do Dual POV videos, I figured I would make a GUI solution for dealing with footage that doesn't require touching the command line. My treat.
That led to me writing CN_4K60S+, an open-source manager of files on an SD card that came from an Elgato 4K60 S+. It sits just one level above FFmpeg and will give you a way to combine files from the SD card, without any compression, and in any format you could possibly need. Here's some screenshots:
It's meant to be simple. All you need to do is specify where
ffmpeg.exe
is on your computer and it will do everything. I
try to make software accomodate everyone. So if someone wanted no loss in
quality, it's there. If someone wanted it to render the video automatically
like a video editor would have, it does it for you. So you don't need a
video editor if all you need is merging or compressing the video down.
It's idiot-proof. Or at least I think it is.
FFmpeg Support
To my surprise, if I wanted options for this card, I can force it with my favourite tool, FFmpeg. I won't exactly go in depth with it, but I will tell you what you can do with it. I think just showing what it can do will open the door to many people who want to have an alternative way to use the card with software they may like.
Appearing as a valid dshow device
On Windows, if you want to record from the 4K60 S+ via FFmpeg, you can via dshow. It will show up as a listed device if you run the following command:
ffmpeg -list_devices true -f dshow -i dummy
Then it will give you a video and an audio device specifically for the 4K60 S+:
[dshow @ 0000023f7c7a1100] "Game Capture 4K60 S+" (video)
[dshow @ 0000023f7c7a1100] Alternative name "@device_pnp_\\?\usb#vid_0fd9&pid_0075#2210804084928050#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{6f814be9-9af6-43cf-9249-c03401000224}"
[dshow @ 0000023f7c7a1100] "Game Capture 4K60 S+ Audio" (audio)
[dshow @ 0000023f7c7a1100] Alternative name "@device_pnp_\\?\usb#vid_0fd9&pid_0075#2210704084928050#{33d9a762-90c8-11d0-bd43-00a0c911ce86}\{6f814be9-9af6-43cf-9249-c03401000324}"
Thus, you may access the device for recording via:
ffmpeg -f dshow -i video="Game Capture 4K60 S+":audio="Game Capture 4K60 S+ Audio"
And this will allow you to access the device as input 0.
Specifications and Recording
For a 1920x1080 input in 8bpc (non-HDR), the input formats are listed as:
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, dshow, from 'video=Game Capture 4K60 S+:audio=Game Capture 4K60 S+ Audio':
Duration: N/A, start: 423943.013866, bitrate: N/A
Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 60 tbr, 10000k tbn
Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Well... if you wanted another way to access that uncompressed audio stream without having to have a FAT32-formatted SD card, there you go. Since you are getting the raw stream, you can export and compress it in any way you like. Lossless or lossy. You have full control over your audio.
The video stream is an h264 copy which has already been compressed before
being sent over the USB-C cable. In other words, there is no raw video
input from this card. You also can't do a -c:v copy
on this
and expect the video output to show properly. You must encode the
video. To prevent a second generation of loss of quality, you can use a
lossless codec like utvideo
. There is no way around this. And
there is no way to tap into the HEVC chip that is onboard the 4K60 S+
either. That chip is solely for SD card recording. The HD60 S+ and the HD60
X do support a lossless video feed over USB-C. So I thought this was an
unusual choice for a card worth $400.
Despite the restrictions, this may be the best choice for some people. When my friend was having stuttering issues with 4K Capture Utility, I wrote up a few bash scripts to record on demand via FFmpeg. It served as a wonderful backup to what he was doing, and even allowed him to go back in and edit the stuttering out in post.
The other obvious benefit here is that you can record to whatever codec and
container you want. MKV container with utvideo
video and
FLAC
audio? Done. MP4 container with h.264
via
libx264
and AAC
audio? With a WAV copy for
editing? Done. AVI? Done. If it's a codec and a container FFmpeg can
deal with, you can use it. And that's a huge win.
Issues and Complaints
I said this wasn't a review but I definitely have some things to say here.
Occasionally restarts even while recording...
One thing that I noticed is that the device will restart itself occasonally, even while I am recording. At first, I thought this was due to power delivery. The capture card is light enough on power that you could technically power it with your Nintendo Switch dock's USB ports. So I thought maybe it was powering down due to that. Unfortunately, that wasn't the issue. Even using the charger in the box and plugging the device into an output, it will just randomly power down and restart itself. I have no idea why it does this.
After reading a bit online, it seems hit or miss. My friend who had the HD60 S+ purchased the 4K60 S+ after I got mine. He reports no issues with it at all. But some people online report my issue. I don't know what it is, but it's something I'll have to look into or return the product. I would like to figure out what is causing it first. I thought it only happens in PC Recording mode. Then it happened in Standalone mode, and I lost some footage.
My hunch is cables. I am using all of the cables that come in the box. So if I swap it out, maybe I'll have better luck. It's hard to test reliably because I could be streaming on Discord for several hours before it does it. But it can also do it after just 10 minutes of streaming.
Colourspace/Detail is lost
I was playing some Pokémon Legends: Arceus and noticed that the colourspace isn't what it says it is in the final video. Here's what I mean:
Nintendo Switch | Elgato 4K60 S+ |
---|---|
Doesn't it look a little... brighter and duller? Unfortunately it can't be argued this is accurate either because there is actual loss of colour detail. Then again, it might be because of how I recorded. When dealing with colourspaces, it's easy to get them confused and have loss of detail. For example, here's Pokémon: Let's Go, Eevee! where, other than the resolution, they are basically identical colour-wise:
Nintendo Switch | Elgato 4K60 S+ |
---|---|
It's a nitpick, if anything. It's barely a difference. But it bothered me enough to mention it.
Give more options
I literally wrote software and formatted my SD card to FAT32 to circumvent that this card doesn't give me lossless audio otherwise. Elgato, you guys clearly have the hardware to do it. Give more options for Standalone Mode. I wouldn't ask for much. Just a lossless audio option, or an audio bitrate value specifier. And also MKV, MP4, and MOV support multiple audio tracks. This can really help editors in post because they won't have to manually align voice tracks with gameplay. Your PC Recording Mode supports this. So why not allow Standalone from doing it too?
Settings occasionally reset in Standalone Mode
Sometimes whenever you slot in an SD card, the 4K60 S+ fails to recognise the card format or read the configuration file. This is a problem for obvious reasons. But in case I need to spell it out,
- It causes unusual combinations of settings. MP4 with AAC audio (160 kbps) on a FAT32 formatted card. Thankfully it still splits 4 GB chunks. But if you intended on recording lossless audio, you just lost data. There is no way to recover it.
- Bitrate is reset. Say goodbye to your custom bitrate settings.
- Container is wrong. Probably the least concerning issue, because it doesn't affect quality in any way. But if I tell it I want an MKV, and it spits out an MP4, that is stupid. I actually use this error to tell if the recording turned out bad or not.
I've had to scrap a few recordings just because of these issues. And the thing that sucks the most is that there is no way to tell if it failed until after the recording job is done. Look, I get it. At least I didn't lose my clip. But if I specify I want one thing, it should actually work and give me what I configured. What is the point in giving us the option for something if we can't use it half the time? These are the basics.
Closing remarks
Like I said, this isn't a review. I just wanted to put out information on the Internet that I couldn't find myself without buying the thing. In most cases, the Elgato website is helpful in documenting what the product can or can't do. I hope this post was helpful to at least someone though.