Skip to content

Repository files navigation

Front Row

Play HDR videos & spatial audio natively

GitHub Release

Screenshot

Experience color accurate HDR videos with full surround sound using spatial audio.

Compatibility

Frequently Asked Questions

Why do I need this?

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.

What about just using QuickTime Player?

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.

Where is feature XYZ?

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.

Can I play MKV files?

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.

Can I convert the file myself instead?

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_text after -c copy if there are built in subtitles
  • Use -tag:v hvc1 for video streams encoded in H265. Use -tag:v avc1 instead 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

I don't hear spatial audio through my supported device

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.

About

Play HDR videos & spatial audio on Mac natively

Topics

Resources

Contributing

Stars

51 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages