At A Glance Main Projects Tutorials Resume

Contact


Email: palen1c at gmail.com




How to Achieve Greater Than 4K Resolution Playback With HAP

Fri, 13 Oct 2017 21:51:51 EST

When working with public displays you often have to pull off non standard video playback. Examples include video walls, multi-monitor setups, and multi-projector displays. The challenges when working with these displays often revolves around flawless video playback at large resolutions and sync.

Flawless video playback starts to become very difficult (in 2017) at resolutions greater than 4K. Traditionally, the larger native resolution of a video, the more computing resources it takes to achieve playback. Many consumer playback codecs also fall short at larger resolutions. The most popular codec/format, H.264 does not currently support resolutions greater than 4096x2160. If you attempt to run resolutions larger than this on modern operating systems, you may see no playback at all.

The sync problem has to do with multiple devices playing back one video source in perfect synchronization. This is not a trivial task. When you reach the maximum amount of monitors/projectors one device can support, you have to utilize multiple independent devices to accomplish full playback. In 2017 If you also want to play back a video source larger than 4K, you often have to utilize more than one hardware device to do it due to the limitations outlined above.

A six by one array diagram.
Commercial off the shelf solutions often handle this by utilizing one device as a master and others pull time code or similar information from the master over a network to synchronize the other hardware playback devices. I feel for the engineers who had to program these solutions. They are very difficult. You have to throw out frames on some sources to stay in sync and guess as to actual synchronization. It is a very difficult balancing act. Commercial solutions I have worked with that utilize techniques similar to this are the popular Brightsign hardware playback devices, and solutions using Watchout. Both of these solutions can be very expensive depending on how big of a display you are creating.

I didn't even mention the complexity of producing video for multi-display setups. Often editors will produce one massive video, but then have to split it up into multiple regions for playback on the different devices.

Thinking outside the box regarding sync, resolution limits, and playback you can avoid the difficult synchronization problem if you can play back ultra high resolution on one device. In a recent project, we were able to pull off 11520px x 1080px playback on one computer. This was a 1x6 orientation for a video wall; but using the same technique you could pull off: 5760 x 3240 in a 3x3 orientation. There are a few modern video cards that support up to 6 displays. You can also use techniques that chain cards together to get multiple outputs on one computer. We had to utilize a computer because the application functioned as ultra high resolution playback as well as an interactive multi-touch wall display.

A three by three array diagram.
The true secret behind that massive resolution is the Vidvox HAP codec. HAP was designed for video DJ activities. When working with HAP you end up with monstrously huge files. Our 4 minute 11520 x 1080 file was around 30 GB in size. When working with HAP you often need a SSD. HAP utilizes very low CPU resources but requires massive disk access speed. Even big players in the space like Dataton's Watchout now support HAP.

I was previously utilizing Adobe Media Encoder to create HAP compliant videos. Adobe Media Encoder takes too long to encode HAP. Thankfully as of September 2017 HAP encoding in FFMPEG Has been fixed as well. If you have a build that supports it, you can utilize a command like this to transcode an input video to HAP with AAC audio:

ffmpeg -i InputVideo.mov -vcodec hap -format hap -chunks 4 -acodec aac OutputHap.mov


"chunks" is an important HAP specific command. The default is 1. Chunks are not supposed to exceed the number of cores the playback computer has. I noticed with a chunk of 1, I was experiencing large memory utilization on a quad to eight core machine. A chunk setting of four really smoothed things out in my use case. My custom application for the multi-touch display and super resolution video playback was written in Unity3D.

AV Integrator's often use off the shelf components such as Brightsigns or Watchout, but with the combination of HAP + SSD savvy installers may want to take a second look at rolling their own solutions. They may end up with significant cost savings if they have the programming expertise to pull it off.

Charles Palen has been involved in the technology sector for several years. His formal education focused on Enterprise Database Administration. He currently works as the principal software architect and manager at Transcending Digital where he can be hired for your next contract project. Charles is a full stack developer who has been on the front lines of small business and enterprise for over 10 years. Charles current expertise covers the areas of .NET, Java, PHP, Node.js, Javascript, HTML, and CSS. Charles created Technogumbo in 2008 as a way to share lessons learned while making original products.

Comments

No one has posted any comments yet, be the first

Comments are currently disabled.