A hardware-accelerated media player for the Nintendo Switch, built on mpv and FFmpeg.
- Custom hardware acceleration backend for FFmpeg, with dynamic frequency scaling. The following codecs can be decoded:
- MPEG1/2/4
- VC1
- H.264/AVC (10+ bit not supported by hardware)
- H.265/HEVC (12+ bit not supported by hardware)
- VP8
- VP9 (10+ bit not supported by hardware)
- Custom graphics backend for mpv using deko3d, supporting:
- Playback at 4k60fps
- Direct rendering (faster software decoding)
- Custom post-processing shaders
- Custom audio backend for mpv using native Nintendo APIs, supporting layouts up to 5.1 surround
- Network playback through Samba, NFS or SFTP
- External drive support using libusbhsfs
- Rich and responsive user interface, even under load
- Download the latest release, and extract it to the root of your sd card (be careful to merge and not overwrite folders)
- Network shares can be configured through the app, as can mpv settings via the built-in editor (refer to the manual)
- Most relevant runtime parameters can be dynamically adjusted during playback through the menu, or failing that, the console (manual)
The build process is roughly outlined in the following:
- Set up a devkitpro environment for Switch homebrew development.
- Install the following packages:
switch-bzip2
,switch-dav1d
,switch-freetype
,switch-glm
,switch-harfbuzz
,switch-libarchive
,switch-libass
,switch-libfribidi
,switch-libjpeg-turbo
,switch-libpng
,switch-libwebp
,switch-libssh2
,switch-mbedtls
,switch-ntfs-3g
,switch-lwext4
andswitch-pkg-config
. In addition, the following build dependencies are required:dkp-meson-scripts
,dkp-toolchain-vars
, and Gimp. - Compile and install a GPL build of libusbhsfs.
- Compile and install libsmb2 and libnfs.
- Configure, compile and install FFmpeg:
make configure-ffmpeg && make build-ffmpeg -j$(nproc)
. - Configure, compile and install libuam:
make configure-uam && make build-uam
. - Configure, compile and install mpv:
make configure-mpv && make build-mpv
. - Finally, compile the main application and build the release distribution:
make dist -j$(nproc)
. - Output will be found in build/
- Behemoth for the screenshot button overriding method.