Why did you make a standalone media player in a world of subscription streaming services?
Not everyone wants to use a subscription streaming service for a variety of understandable reasons.
Many people prefer to own their content rather than renting it from a provider.
For some, the loss in quality due to compression artifacts present in streaming media is unacceptable.
Moreover, many people who grew up before the age of smartphones have a sizable collection of offline content stored in a variety of formats.
Which file formats and codecs are supported?
Optimus Player is built on top of the FFmpeg software libraries, which support 250+ file formats and 400+ codecs.
The full list is available here.
Which codecs are hardware-accelerated?
The following video codecs will be accelerated if hardware support is available: HEVC, H.264, H.263, MPEG-4, MPEG-2, and MPEG-1.
In some rare cases, hardware acceleration may not be available even if the video format matches.
Optimus Player will automatically fall back to the software decoder if hardware acceleration is unavailable.
Is 10-bit HDR video supported?
Yes, HDR10 and HLG are supported (provided that the display and the connection have been appropriately configured).
Is DRM, streaming media, Blu-ray, or DVD supported?
Unfortunately, no. But who knows what the future holds? 😉 (See How do I request a feature? below.)
How much effort is required to make a media player?
It took me 6 months after quitting my full-time job to deliver a Version 1 that I would be proud of.
First of all, delivering any software of value is hard enough: learning new technologies; writing correct, reusable, maintainable code; testing features and fixing bugs; designing the user experience and app icon; “polish” (implementing smaller, platform-specific features); building a scalable website back-end; designing and building the website; setting up domain names, email, and a payment provider; ensuring legal compliance; public relations.
Developing a media player is more challenging than most other apps because the inputs and the outputs are very diverse, which means the app has to support: hundreds of file formats; hundreds of codecs; dozens of pixel formats; interleaved and non-interleaved audio; downmixing and upmixing; synchronizing between output devices with different latencies; subtitles with complex styling.
Finally, sprinkle in some even more demanding challenges: understanding video color management; reverse-engineering the macOS AirPlay 2 private API; building a code injection helper tool to enable AirPlay 2; investigating and fixing other people’s bugs (often without access to their code).
That’s a lot of work. 😵
How do I ensure colors are faithfully reproduced?
There are three components to this question: the media itself, the display, and the viewing environment.
The latter two are common to all apps running on the device.
Ideally, the author of the content should embed color space information in the media so that a media player can interpret the color values correctly.
However, if the media is missing this information, Optimus Player will guess the color space based on the characteristics of the video.
The display color profile selected in System Preferences must be calibrated to your display and your viewing environment.
All recent Macs come out-of-the-box configured with a display color profile called “Color LCD” that has been calibrated to the built-in display and the sRGB viewing environment.
For playback on a TV, macOS comes out-of-the-box with TV color profiles, one of which is automatically selected based on the color space communicated by the TV through the HDMI cable.
Just make sure to use an HDMI cable that supports the TV’s selected color space.
For example, the Ultra HD (Rec. 2020) color space requires HDMI 2.0 or later. In addition, turn off all of the color adjustment settings on your TV.
For playback on the built-in display using the built-in “Color LCD” display color profile, ensure your viewing environment matches the sRGB viewing environment.
For playback on a TV using a built-in TV color profile, ensure your viewing environment matches the Rec. 2035 viewing environment (section 1.1).
How do I enable AirPlay 2 audio?
In the menu bar, choose Optimus Player > Preferences and then navigate to the Advanced tab.
Follow the instructions in the AirPlay 2 section.
If the procedure was successful, there will be a green dot beside text that reads “AirPlay 2 Available”.
How do I stream audio using AirPlay?
To stream audio using regular AirPlay, select the AirPlay device in the system audio output menu as described here.
To stream audio using AirPlay 2 to compatible devices, first enable AirPlay 2 audio.
When Optimus Player detects a nearby AirPlay device, the AirPlay icon will appear in the media player controls area.
Click the AirPlay icon to show the AirPlay device picker.
Select as many devices as you wish and adjust their volume using the slider controls.
Optimus Player will send audio to the selected AirPlay device(s) while automatically synchronizing the audio and the video.
How do I use the subtitle text style that I configured in the Accessibility system preference pane?
In the menu bar, choose Optimus Player > Preferences and then navigate to the General tab.
Select the “Override media text style with accessibility style” checkbox.
Note that the text style cannot be customized for image-based subtitle formats such as PGS (Blu-ray) and VobSub (DVD).
How do I use subtitles from an external subtitles file?
In the menu bar, choose File > Add Subtitles and then select the subtitles file to open.
Alternatively, drag the subtitles file and drop it on the window.
In both cases, the subtitle track(s) from the subtitles file will be available under the Tracks menu.
How do I show two subtitle tracks simultaneously?
If there are two or more subtitle tracks available, the Tracks menu will show a “Subtitle Tracks (Bottom)” section and a “Subtitle Tracks (Top)” section.
Select a subtitle track in each section to show at the bottom of the window and at the top of the window, respectively.
How do I use multi-touch gestures to navigate the media?
Position the cursor over the window. Then, drag two fingers (or one finger for Magic Mouse) to the right or to the left to navigate forward or backward, respectively.
What keyboard shortcuts can I use to control playback?
|Enter/Exit Full Screen
||Jump to Beginning
||Jump to End
How do I show the duration instead of the remaining time?
Click the remaining time text to show the duration.
Click the duration text to show the remaining time again.