NXMP Nintendo Switch Media Player

nxmp-banner.jpg


NXMP is an open-source Nintendo Switch media player based on MPV and FFMPEG, supporting a wide range of media file formats and codecs.
NXMP is coded by @proconsule54 and @darkxex

It support HTTP,FTP,SFTP,Samba,NFS streaming and it also support Enigma2 decoders. Starting from 0.7.0 Version it features HW Decoding for H264,HEVC,VP9,VP8,MPEG2 up to 4K HDR@30fps


Project repository|Stable Build
Stable: v0.9.3



Features:
  • HW Decoding (since v0.7.0) for (H264,HEVC,VP9,VP8,MPEG2)
  • Extense support of media file formats and codecs, including audio too as well​
  • Touch and controller support, control the MP as you want​
  • Video deinterlace support
  • Advanced image settings, configure the brightness and color options, change aspect ratio and rotate the screen​
  • Custom subtitles, you can configure options like color, text size and position to your preferences​
  • Full sound EQ, allow adjust the sound equalizer to your preferences, you can define presets too​
  • Chapters navigator with titles support​
  • Selector of Video/Audio/Subtitle tracks during play​
  • Playlist queue, allow to enque desired files on a playlist for non-stop play​
  • Resume play, you can continue your videos where you previusly stop it​
  • Watch status, watched videos are marked as green on file explorer​
  • Shadermania, you can apply any shader compatible with MPV to NXMP​



Media sources supported:
  • Nintendo Switch SD Card
  • USB drive attached to dock or Switch with USB C adapter (FAT, NTFS and EXT4, up to 32 drives)
  • HTTP/S files through network
  • FTP and SFTP files
  • Samba (SMB) files shared throught network
  • NFS
  • Enigma2 (allow to view TV channel from satellite decoders compatible with this protocol)


Screenshoots:

2021110300034400.jpg2021110300031500.jpg2021110300032100.jpg2021110300023000.jpg



Post here any kind of bug/suggestions.
Enjoy!

Thanks to libusbhsfs https://github.com/DarkMatterCore/libusbhsfs for USB drives support
Thanks to @averne for HW Decoding FFMpeg! and for many many hints
Thanks to @bodyXY for the banner and the icons!
Thanks to @Godorowski for player UI design and releated icons
Thanks to @Chocola for beta testing a player guide
 
Last edited by proconsule54,
yeah i noticed that with mpv as well. if you pass it a m3u with multiple sources (eg, same show but at different quality) it seems to randomly (iirc) select a source, which takes a very long time to do so. after the source is selected, it loads instantly, so that part of the m3u loading is okay.

but yeah, something to parse the multiple sources, list them out to the user, showing the quality difference (if listed in the m3u master) would be a nice-to-have feature. this can also be used for crunchyroll and funimation
Yes, i will do a m3u parser and pass only the selected source to mpv.
 
  • Like
Reactions: laraklara
@DarkMatterCore in libusbhsfs is possible to add an APFS file support.
I only need to read not write.
Just saw this post, sorry for the delay. It should be theoretically possible as long as an open source APFS driver with either an ISC-compliant or a GPL-compliant license exists. Shall this be the case, adding support for APFS should be trivial (and fun).
 
Happy to have recovered after big health problems and looking forward to experience the progress of this great player.
As i secure alot of YouTube content on my SD card I use on linux system Video Downloader - https://github.com/Unrud/video-downloader - to get those videos. It's based on yt-dlp.
I've tested a .webm video file and it isn't listed in NXMP.
 
Happy to see you again @docgold, and happy you are well :D
i think webm will work but is not added to media file filter, you can rename one file to .mp4 just to see if it open and play.
In the next version for sure it will be supported
 
Those fkn vaccines allmost killed me.

Your advice was succesfull. It works.

Are there any changes in Enigma2 syntax? I can't find valid instructions in github how to define different port, user & password?
[Enigma2]
e2address=http://ip_of_receiver/ ... ?
 
  • Like
Reactions: proconsule54
Those fkn vaccines allmost killed me.

Your advice was succesfull. It works.

Are there any changes in Enigma2 syntax? I can't find valid instructions in github how to define different port, user & password?
[Enigma2]
e2address=http://ip_of_receiver/ ..
User and PW are not supported right now, port is in form
Code:
http://ip_of_receiver:port/
 
Dev Update:
Touch Friendly Interface (can be enabled/disabled in settings menu)

View attachment 293616View attachment 293617

This will make easier to use with touch controls.
Yeah, I had the situation that NXMP froze when I touched the screen. Maybe someone can help out to let those 8 symbols look uniformly. I've read you're not into graphics but maybe someone specialized in this segment can contribute. I like the combination of blue and orange you've chosen. It reminds me of former techno "radio sunshine live" logo. Sadly they took redesign but maybe this is an inspiration for you. A little bit of change in color matching like this Logo. Keep up on good work.
 
  • Like
Reactions: proconsule54
Yeah, I had the situation that NXMP froze when I touched the screen. Maybe someone can help out to let those 8 symbols look uniformly. I've read you're not into graphics but maybe someone specialized in this segment can contribute. I like the combination of blue and orange you've chosen. It reminds me of former techno "radio sunshine live" logo. Sadly they took redesign but maybe this is an inspiration for you. A little bit of change in color matching like this Logo. Keep up on good work.
The colors was choosen by @bodyXY that makes many of the icons used in NXMP.
I asked here for some help on icons but sadly noone replied.....
 
Maybe i forgot the libnfs.a i will add it

Edit:

The libnfs.a is present in my portlibs binary. Probably is missing the -lnfs in Makefile

Code:
LIBS    := `curl-config --libs` `sdl2-config --libs` `freetype-config --libs` -lmpv -lssh2 -lswscale -lswresample -lavformat -lavfilter -lavcodec -lavutil -llzma -lopus -lvpx -lass -lharfbuzz -lfreetype -lfribidi -lpng -lbz2 -lusbhsfs -lntfs-3g -llwext4 -lglad -lEGL -lglapi -ldrm_nouveau -ltinyxml2 -lturbojpeg -llua -lmbedcrypto -lmbedx509 -lmbedtls -lmbedcrypto -lmbedx509 -lmbedtls -lsqlite3 -lsmb2 -lnx -lz

change to this

Code:
LIBS    := `curl-config --libs` `sdl2-config --libs` `freetype-config --libs` -lmpv -lssh2 -lswscale -lswresample -lavformat -lavfilter -lavcodec -lavutil -llzma -lopus -lvpx -lass -lharfbuzz -lfreetype -lfribidi -lpng -lbz2 -lusbhsfs -lntfs-3g -llwext4 -lglad -lEGL -lglapi -ldrm_nouveau -ltinyxml2 -lturbojpeg -llua -lmbedcrypto -lmbedx509 -lmbedtls -lmbedcrypto -lmbedx509 -lmbedtls -lsqlite3 -lsmb2 -lnfs -lnx -lz
 
Last edited by proconsule54,
Maybe i forgot the libnfs.a i will add it

Edit:

The libnfs.a is present in my portlibs binary. Probably is missing the -lnfs in Makefile

Code:
LIBS    := `curl-config --libs` `sdl2-config --libs` `freetype-config --libs` -lmpv -lssh2 -lswscale -lswresample -lavformat -lavfilter -lavcodec -lavutil -llzma -lopus -lvpx -lass -lharfbuzz -lfreetype -lfribidi -lpng -lbz2 -lusbhsfs -lntfs-3g -llwext4 -lglad -lEGL -lglapi -ldrm_nouveau -ltinyxml2 -lturbojpeg -llua -lmbedcrypto -lmbedx509 -lmbedtls -lmbedcrypto -lmbedx509 -lmbedtls -lsqlite3 -lsmb2 -lnx -lz

change to this

Code:
LIBS    := `curl-config --libs` `sdl2-config --libs` `freetype-config --libs` -lmpv -lssh2 -lswscale -lswresample -lavformat -lavfilter -lavcodec -lavutil -llzma -lopus -lvpx -lass -lharfbuzz -lfreetype -lfribidi -lpng -lbz2 -lusbhsfs -lntfs-3g -llwext4 -lglad -lEGL -lglapi -ldrm_nouveau -ltinyxml2 -lturbojpeg -llua -lmbedcrypto -lmbedx509 -lmbedtls -lmbedcrypto -lmbedx509 -lmbedtls -lsqlite3 -lsmb2 -lnfs -lnx -lz
thanks, work amazing, I'll send a humble commit soon.
 
miaporte.png

Hi friend, this is my pullrequest.

Same as audio above, but added the feature to choose the default subtitle.
what happens is that when there are multiple subtitles in a mkv, by default, it disables the subtitles, when choosing one, it will always start with the desired subtitle.

https://github.com/proconsule/nxmp/pull/9

If anyone wants to try it, here's my fork.
https://github.com/darkxex/nxmp/releases/
 
  • Like
Reactions: Djakku and ber71

Site & Scene News

Popular threads in this forum