4K video playback depends on system codecs?

We are trying to play back 4K videos in our Windows-only project, but we just realized that some of our footage plays back only on some of our test machines. It looks like as if Unreal is not using built-in codecs but system codecs to decode the videos?

If this actually is the case, then how can we make sure that the videos play on all our end users’ machines?

The current documentation is quite vague on which formats, codecs, codec levels etc. are supported on a given platform.

Details:

We have created all our footage in Nuke and Premiere. In both cases, the final encoding is done in Adobe Media Encoder (AME) using h.264 wrapped in mp4.

On one of our three test machines (computer A), all videos play just fine in Unreal, including resolutions around 4096x2048. However, on the other two machines (computer B and C), the maximum that seems to work when encoding with AME is 3840x1080 (h.264 level 5.1). Anything above that resolution causes the UE Media Player panel to show the length of the clip correctly but being unable to start playing it.

Computer A has lots of video software installed on it, so it probably also has numerous video codecs installed at system level. Computer B has only certain Adobe Creative Cloud software installed, while computer C has no video software installed at all.

On the problematic machines, Windows Media Player plays or refuses to play exactly the same videos that Unreal plays or refuses to play → both depend on the same system codecs? (vlc plays everything just fine on all machines)

As said, everything works nicely on computer A.

On computer B, Unreal gives the following warning in the logs when trying to play an AME-encoded h.264 video that exceeds the aforementioned resolution: LogWmfMedia:Warning: Unsupported video type '1cva' (61766331-767a-494d-9df278b43790dc25) for stream 0

On computer C, Unreal does not log anything to the logs when trying to play such a video.

Some 3840x2160 and 4096x2048 h.264 videos downloaded from the internet do work also on computers B and C, so we could dig deeper into the video files that AME generates to see how they actually differ. However, this would not solve the primary problem:

If the decoding subsystem in Unreal really is not self-contained, and there is no documentation on what codecs, codec levels, resolutions etc. are supported and what auxiliary software needs to be installed on the target system, then it seems impossible to ensure that the packaged product will work for every end user?

Target platforms: Windows-only (VR)
UE version: 4.13.2 binary download

It looks like as if Unreal is not using built-in codecs but system codecs to decode the videos?

Yes, the media players shipping with UE4 wrap the OS media player APIs.

On computer B, Unreal gives the following warning in the logs when trying to play an AME-encoded h.264 video that
exceeds the aforementioned resolution: LogWmfMedia:Warning: Unsupported video type ‘1cva’ (61766331-767a-
494d-9df278b43790dc25) for stream 0

The problem here is not the resolution, but the codec. avc1 (4.13 has a bug where the video type is reversed) is actually a QuickTime codec. This is not a standard codec supported on Windows by default. It is, however, the default H.264 codec used in Adobe Premiere, so you need to select something else when exporting your file.

For best cross-platform compatibility you should encode regular H.264 inside an MP4 container. Windows can play up to 4096 × 2304 pixels this. The codec/container combination also works on all other platforms, but on PS4 and XboxOne you’ll likely get performance issues with 4k video.

If you only target Windows, the best format is probably WMV.

We are in the process of putting video codec and resolutions documentation online soon.

Wow, that was fast! :slight_smile: We will proceed with this info, thank you for the thorough answer!

I have been struggling with this as well. google searches, forum searches, tutorials, all come up short when it comes to video formats. I want to use videos with embedded alphas. That can be avi’s or Mov’s in an animation or apple pro res codecs. MP4’s just don’t support embedded alpha channels. I Have been able to run two parallel mp4s (one the solid foreground and the other the black and white alpha) to the emissive color and opacity respectively, and that did work, but the video channels are slightly out of sync and even by a frame that is not acceptable. Has there been any progress on the video front from Unreal? 4.15 doesn’t seem to have helped.

To my knowledge there are two factors that matter for whether Windows Media Player can play mp4 4K files:

  1. Windows 8.1 or higher
  2. Intel CPU (3rd or 4th generation)
    (AMD CPUs and older Intel CPUs may have problems)

Yes, you want a modern CPU. Skylake, and Kaby Lake even more so, have optimizations for video decoding. 4K video is quite demanding.

Another factor is memory. The WMF based player plug-in in UE4 has to make an extra copy of frames from the decoder thread to CPU memory. There might be a more direct path using DirectX surfaces, but I haven’t had time to look into it yet. In the meantime, you also want fast RAM to improve playback performance.

If you’re using special codecs, you could possibly also bundle those with your game installer.

I have the same issues here.
some of our machines do play 265 with no problems, others don’t.

So, I am little helpless, since I don’t know what codec I installed on the machine that works…

all systems are windows 10, updated and Microsoft HEVC installed.

Can anyone tell me, which codec is needed to playback 4k265 in unreal?

I have the same issues here.
some of our machines do play 265 with no problems, others don’t.

So, I am little helpless, since I don’t know what codec I installed on the machine that works…

all systems are windows 10, updated and Microsoft HEVC installed.

Can anyone tell me, which codec is needed to playback 4k265 in unreal?

If u still have issues reach out to HISPlayer and we can help with your 4k streaming needs.