Play HDR videos & spatial audio natively
Experience color accurate HDR videos with full surround sound using spatial audio.
- HDR video compatible Macs and/or spatial audio compatible devices
- Apple Silicon (M1 and later)
- macOS Sequoia 15.6 and later
- Xcode 26.3 (to build)
Many movies and TV shows are available with multichannel audio. However you would need to have a full surround sound setup in order to fully enjoy that experience. Apple introduced spatial audio which allows playing multichannel audio into regular headphones, such as the AirPods Pro. This vastly improves the roominess and depth of the played audio. Unfortunately, not many video players support Apple's spatial audio. So I created a simple video player with AVKit, which is able to use spatial audio.
Sure, that works too. But I didn't like QuickTime Player's keyboard shortcuts nor its large on screen controls which blocks the video and subtitles.
I created Front Row to play those rare video files that are in HDR and/or multichannel with spatial audio. For everything else, I use IINA like you.
Front Row is based on AVKit (the same playback stack as QuickTime Player) and can't natively open MKV files. However, MKV is a container format and it usually contains Apple-supported streams such as MPEG-4 video with AAC audio. When that's the case, Front Row will offer to convert it for you.
This needs ffmpeg installed:
brew install ffmpeg
Open an MKV file and Front Row checks what's inside it, then offers to convert:
- If the video and audio are both formats it can play, they're copied into an MP4 as they are — nothing is re-encoded, and it takes a few seconds
- If only the audio is unsupported (DTS, TrueHD, FLAC, Opus), the video is still copied and just the audio is re-encoded to AAC
- Text subtitles come along as
mov_text. Bitmap subtitles (Blu-ray, DVD) can't be stored in an MP4, and the dialog warns you before you start - If the video itself can't be decoded (VP9, for example), Front Row won't offer to convert the file because it will usually take much longer time
The MP4 is written next to the original. When it's done, Front Row asks whether to move the MKV to the Trash, then starts playing.
Yes. Although Front Row intelligently handles most cases, this short version works by hand:
ffmpeg -i ./input.mkv -map 0 -c copy -tag:v hvc1 ./output.mp4
If that fails to mux, map the streams you actually want instead of -map 0, for example -map 0:v:0 -map 0:a:0.
Note:
- Add
-c:s mov_textafter-c copyif there are built in subtitles - Use
-tag:v hvc1for video streams encoded in H265. Use-tag:v avc1instead for H264
If you don't hear any audio afterwards, the audio stream is in a codec that is not natively supported by Apple, and needs transcoding into a supported one:
ffmpeg -i ./input.mkv -map 0 -c copy -c:a aac_at -b:a 448k -tag:v hvc1 ./output.mp4
First, make sure that the audio track contains more than 2 channels. Also, make sure to turn on spatial audio under the audio menu bar while the video is playing.
