AudioFormatReader - AAC - MP4 Reader For Windows

I understand there are licensing issues with the AAC encoder, however the lack of native Windows support for reading AAC/MP4 files is a significant limitation.
This has been at the TOP of my personal JUCE ‘Wish List’ for quite some time

iiuc the licensing issues are only when you incorporate libraries to do it, but it’s fine when using the platform APIs, like with the CoreAudio based readers on macOS.

As far as I know, if you install a Windows Media Codec for AAC (free ones are available) and enable JUCE_USE_WINDOWS_MEDIA_FORMAT then AudioReader can read aac. Of course the Apple DRM will still prevent loading aac files coming from iTunes.

For a long time Windows has a newer API, “Media Foundation”, which I think is now available on every device you’d want to support nowadays, which supports more formats than the older APIs without requiring additional installs.

1 Like

But does Juce support “Media Foundation”?

Not afaik. But this topic is a feature request, and the best way to implement it is probably to support Media Foundation. It will allow reading not just MP4 files but other types too.

1 Like

Just helping confirm - having gone through the motion of researching this for other frameworks (and implementing) before, MediaFoundation is the most appropriate native solution - which JUCE doesn’t support.

That being said, it might be possible to just add extensions to the current solution that JUCE provides; see the file juce_WindowsMediaAudioFormat… WMA might support AAC already because it’s a typical and old streaming format.

Either way, I wish I could vote for this too! I added an assortment of GitHub issues a long time ago about this very topic of adding more codec support.


Just got the same issue, I made a universal sampler, but only Mac & iOS supports mp4, not windows.

Juce team, please consider adding mp4/mov support for audioFormatReader~~~


Just tried this method, got no luck on aac files and mp4 files. Actually JUCE_USE_WINDOWS_MEDIA_FORMAT is defined as 1 if not defined in Projuce 7.