Media Framework Roadmap

Hmm… yeah, with each frame being rendered by the Engine, it should use the very latest frame available from the video decoder.

Perhaps the decoder is outputting at 30 FPS?
Would you be able to share the affected video, so I can test it?

4.13 and JULY NEED TO COME FASTER :smiley:

I am hoping it really does make it into 4.13. Best of luck to you making it. Thanks for all your hard work.

Hey gmpreussner, is better volume control for Media Players coming in this update you’re working on?

I wasn’t planning on adding volume control. Wouldn’t you control the volume via the Sound editor?

After many hours of tinkering, I still can’t figure out how to alter the volume of a Media Player which is playing in the UMG. (See my Answerhub comments here: How to mute/lower sound in Media Player - Audio - Epic Developer Community Forums)

Would be so great if there was a simple way to alter the volume of a Media Player in Blueprint with some simple nodes (Set Volume, Fade Volume etc.), or at least assign a Media Player a Sound Class so that it could be easily altered by pushing/popping Sound Mixes.

It’s entirely possible that it is possible to do these things (perhaps even easily) but I can’t figure it out. Nothing I have tried so far has been able to affect the volume of a Media Player.

1 Like

After some further investigation and testing our plugin was putting in frames into Unreal’s Media framework at a slower than expected rate. Once we fixed that we are now seeing the full frame being pushed into the engine, and in minimal delay.

Ok great, glad you figured it out!

I am currently overhauling the Media API. A lot of things will change drastically. If you’re writing your own Media Framework plug-in, please contact me at .preussner@epicgames.com so that I can learn more about your use case and help you with the transition. Otherwise your plug-in will stop working in 4.13. There will be no backwards compatibility.

For 4.13 can we expect similar performance to 360 video playback in unity? I’d like to incorporate 360 UHD stereoscopic playback of h265 with spatial audio tracks with in engine live geometry.

Very much waiting on this for the VR version of our project

I guess it’s time for another update. The Media Framework 2.0 project is progressing well. We finally have pixel format conversion on the GPU and H.264 support on Windows!

There’s still a good amount of work left. Current ETA for the first check-in to Master is June 17th. Hopefully no major catastrophes occur in the meantime.

  • File & URL media sources (finished)
  • Playlists (finished)
  • API performance improvements for 4K/360 video (finished)
  • API simplification (finished)
  • Content pipeline overhaul (almost done)
  • Upgrade all player plug-ins to new API (WmfMedia and PyroMedia done, VlcMedia & PS4Media almost done, rest to do)
  • Better audio support (in progress)
  • Linux support (in progress via VlcMedia)
  • Android camera media source (on hold)
  • WmfMedia command queue & fix state machine bugs (to do)
  • WmfMedia H.264 support & GPU pixel format conversion (finished)
  • Improved packaging workflow (to do)
  • Sequencer integration (to do)
  • Video capture hardware support (on hold, probably 4.14)
  • Google VPX based player (on hold, probably 4.14)

a586318e351447c0564617f792b952e563fcf567.jpeg

What format do the URL media sources need to be in? I’m currently working on a project with a requirement that a remote webcam stream is placed into the scene. If there was an in-engine mechanism to accomplish this, that’d be amazing!

That depends on the player plug-ins that you have installed for your platform.

Here’s a quick dump of the WmfMedia plug-in for Windows (see the block for ‘supported schemes’):



		// supported file extensions
		SupportedFileExtensions.Add(TEXT("3g2"));
		SupportedFileExtensions.Add(TEXT("3gp"));
		SupportedFileExtensions.Add(TEXT("3gp2"));
		SupportedFileExtensions.Add(TEXT("3gpp"));
		SupportedFileExtensions.Add(TEXT("aac"));
		SupportedFileExtensions.Add(TEXT("adts"));
		SupportedFileExtensions.Add(TEXT("asf"));
		SupportedFileExtensions.Add(TEXT("avi"));
		SupportedFileExtensions.Add(TEXT("m4a"));
		SupportedFileExtensions.Add(TEXT("m4v"));
		SupportedFileExtensions.Add(TEXT("mov"));
		SupportedFileExtensions.Add(TEXT("mp3"));
		SupportedFileExtensions.Add(TEXT("mp4"));
		SupportedFileExtensions.Add(TEXT("sami"));
		SupportedFileExtensions.Add(TEXT("smi"));
		SupportedFileExtensions.Add(TEXT("wav"));
		SupportedFileExtensions.Add(TEXT("wma"));
		SupportedFileExtensions.Add(TEXT("wmv"));

		// supported platforms
		SupportedPlatforms.Add(TEXT("Windows"));

		// supported schemes
		SupportedUriSchemes.Add(TEXT("file"));
		SupportedUriSchemes.Add(TEXT("http"));
		SupportedUriSchemes.Add(TEXT("httpd"));
		SupportedUriSchemes.Add(TEXT("https"));
		SupportedUriSchemes.Add(TEXT("mms"));
		SupportedUriSchemes.Add(TEXT("rtsp"));
		SupportedUriSchemes.Add(TEXT("rtspt"));
		SupportedUriSchemes.Add(TEXT("rtspu"));


And this is for VlcMedia on desktop platforms:



		// supported file extensions
		SupportedFileExtensions.Add(TEXT("3gp"));
		SupportedFileExtensions.Add(TEXT("a52"));
		SupportedFileExtensions.Add(TEXT("aac"));
		SupportedFileExtensions.Add(TEXT("asf"));
		SupportedFileExtensions.Add(TEXT("au"));
		SupportedFileExtensions.Add(TEXT("avi"));
		SupportedFileExtensions.Add(TEXT("dts"));
		SupportedFileExtensions.Add(TEXT("dv"));
		SupportedFileExtensions.Add(TEXT("flac"));
		SupportedFileExtensions.Add(TEXT("flv"));
		SupportedFileExtensions.Add(TEXT("mkv"));
		SupportedFileExtensions.Add(TEXT("mka"));
		SupportedFileExtensions.Add(TEXT("mov"));
		SupportedFileExtensions.Add(TEXT("mp2"));
		SupportedFileExtensions.Add(TEXT("mp3"));
		SupportedFileExtensions.Add(TEXT("mp4"));
		SupportedFileExtensions.Add(TEXT("mpg"));
		SupportedFileExtensions.Add(TEXT("nsc"));
		SupportedFileExtensions.Add(TEXT("nsv"));
		SupportedFileExtensions.Add(TEXT("nut"));
		SupportedFileExtensions.Add(TEXT("ogm"));
		SupportedFileExtensions.Add(TEXT("ogg"));
		SupportedFileExtensions.Add(TEXT("ra"));
		SupportedFileExtensions.Add(TEXT("ram"));
		SupportedFileExtensions.Add(TEXT("rm"));
		SupportedFileExtensions.Add(TEXT("rmvb"));
		SupportedFileExtensions.Add(TEXT("rv"));
		SupportedFileExtensions.Add(TEXT("ts"));
		SupportedFileExtensions.Add(TEXT("tac"));
		SupportedFileExtensions.Add(TEXT("tta"));
		SupportedFileExtensions.Add(TEXT("ty"));
		SupportedFileExtensions.Add(TEXT("vid"));
		SupportedFileExtensions.Add(TEXT("wav"));
		SupportedFileExtensions.Add(TEXT("wmv"));
		SupportedFileExtensions.Add(TEXT("xa"));

		// supported platforms
		SupportedPlatforms.Add(TEXT("Linux"));
		SupportedPlatforms.Add(TEXT("Mac"));
		SupportedPlatforms.Add(TEXT("Windows"));
		SupportedPlatforms.Add(TEXT("WinRT"));

		// supported schemes
		SupportedUriSchemes.Add(TEXT("cdda"));
		SupportedUriSchemes.Add(TEXT("file"));
		SupportedUriSchemes.Add(TEXT("dvd"));
		SupportedUriSchemes.Add(TEXT("ftp"));
		SupportedUriSchemes.Add(TEXT("http"));
		SupportedUriSchemes.Add(TEXT("https"));
		SupportedUriSchemes.Add(TEXT("mms"));
		SupportedUriSchemes.Add(TEXT("rtp"));
		SupportedUriSchemes.Add(TEXT("rtsp"));
		SupportedUriSchemes.Add(TEXT("sap"));
		SupportedUriSchemes.Add(TEXT("screen"));
		SupportedUriSchemes.Add(TEXT("vcd"));


Is everything working ok on the mac side?

Looks like the Media Framework 2.0 is coming along great, Great work! :slight_smile:

It’s good to see this is being worked on. Though i can’t be the only one surprised media playback is so poor after trying to import a basic mp4. Seems kind of odd for a major games company in 2016 to have neglected this basic stuff up until now. I mean you can’t even use compressed audio files instead of wavs!?

I know right its really sad and disappointing

I have big problems using the media framework in 4.11 … even using wmv files i get random freezes and crashing… Please, i really hope with version 2.0 things will be much more stable?

Sequencer got me to give your engine a serious look. I am now sold, the above 2 are my vote for getting done sooner rather than later. Coming from a video background of 10+ years, and not really having an editor besides Nuke or Adobe Prem./Avid…Unreal is now actually looking like a Editors solution for 2017 and into the 2020’s. Having been burnt by FCP’s drop of Studio support and limited to X…which is not a real solution. I was left switching to the industry standard of Avid, which felt out of date, or Nuke and foundry toolset…which comes with a huge price tag. Unreal stands a chance to really be the only solution for indie studios that want to do pro commercial work that can reach into the foundry toolset but not require it. Bravo for the vision. Please continue to put focus us on Editors without a home. I think you will find the tight knit community will all come over in a big chunk once you reach a certain threshold.

Compression will always have glitches, and artifacts. It is the nature of it. I would rather the tool forced me to use uncompressed stuff, and then took care of compressing it for the platforms. Shrinking the size with it’s own native solution…which is fine since we have source. Much of the mp* stuff is owned by Sony. So really the next standard down from that is Ogg, or uncompressed wav. Not really that suprising, licensing is the main issue here not the tech/code behind it I would venture to say.