Friday, March 27, 2015

GoPro Hero4 - Files, Codecs, and More

While shopping to build my GoPro "kit", something I was having a hard time with was determining file sizes for the different video formats.  I wanted to be able to say "I need X GB of space for 60 minutes of video at 4K".  I found anecdotal evidence, but nothing real.  So, as soon as my Hero4 Black came, I started collecting data to figure out how many memory cards I needed and how many hard drives I need to carry with me.

My tests were all done on a GoPro Hero4 Black edition.  I tested 720p, 1080p, 2.7K, and 4K video at several different FPS rates.  I didn't cover them all, just the ones I thought would be most popular.  The results were shocking to say the least.  I encode video all the time and there's generally good broad statement that "the higher the resolution and the higher the frame rate, the larger your output files will be".  Somehow with the GoPro, that's not the case.  Maybe it's a firmware bug that's effecting the codecs, but whatever the case is, it is NOT intuitive.

Also, the camera records files into 4GB "chunks".  This is probably due to a common file system limitation and memory space available on the camera.  But, that doesn't mean you can't have a recording session larger then 4GB.  I'm not showing all the files the camera outputs.  It also produces a sidecar file for each video file with metadata in it.  The GoPro Studio software takes all those files (video and metadata) and will show you the output based on the recording session.  In other words, if you press the shutter button and record for 45 minutes, you may have 4 individual MP4 files, but GoPro Studio knows what to do and will automagically join those 4 and show them as 1.  You can do this in any video editing software really, but GoPro studio just does it for you.

On to the data:

That's a screenshot of several files, named like "resolution-FPS".  Several things to note here:

  • Windows 7 is not able to show the frame size details for anything over 1080p.
  • Windows 7 also calculates/reads the frame rates a little wrong, and rounds down instead of the industry standard of rounding up.
  • The size of some resolutions/FPS doesn't make sense.  For example, the 1080p/30 file is the same size as the 1080p/60 file, even though it has twice the amount of frames in it.
  • That means if you want to record 720p/30, you might as well record at 1080p/30 and downscale the output in GoPro Studio and keep the higher quality master.
Next, I wanted to grab some of the codec info for the files, just to confirm that the camera is actually recording at what is expected.  Also, I wanted to make sure these were really generic MP4 files using H.264.  These are screenshots taken inside VLC Media Player while playing the video files.  No huge surprises here.

720p Video:

1080p Video:

2.7K Video:

4K Video:

I can't tell you what size and speed to record at.  That's a complicated question and varies on your needs for each particular shooting situation.  I can tell you that for my first desired use case (SCUBA diving), I'll be using 4K/30.  My intent is to just let the camera record the entire time I'm in the water, and grab stills out using software as I like each shot.  We'll see how well that works.  There's a chance the images can be blurry doing that since you don't have any real shutter speed controls then, but we'll see.  I'll post up my results when I do it!

If you have any questions or want to know more about what I did, please post in the comment section!  Be sure to check out my past and future GoPro reviews!

No comments:

Post a Comment

IT Accountability: Avoiding Murphy

Amongst technology experts, Murphy is someone we all try to avoid.  Murphy's Law states "Anything that can go wrong, will".  E...