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

NXMP it's on early versions and active dev state so expect any kind of bugs, anyways it's fully functional and tested before every release

Project repository|Stable Build
Stable: v0.9.0



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,

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
753
Trophies
1
Age
43
XP
2,679
Country
Italy
you mean 0.5.0 to 0.6.0 right?
and sure, send it to me :). should I overwrite the current 0.6.0 with it? or add it in yet another directory?
it will be a test version, is better to have a dedicated directory for testing it, that will be deleted when the stable version will come
 
  • Like
Reactions: FFTW

BananaRoad

Member
Newcomer
Joined
Dec 26, 2018
Messages
8
Trophies
0
Age
40
XP
32
Country
Canada
Thanks for the app. Just stumbled on this accident and will be perfect for vacations w/ the Switch.

On 0.6. When setting up the sources for network drives in the config, typos will prevent the app from opening properly. Like if I did the '|' instead of a '/' after the network drive alias. Doesn't seem to like special characters like '?' or '!' in the credentials if a network share requires them either. Is there a convention to escape these?

Minor comments:
  • Is there a list of supported subtitle formats, It looks like SRT/ASS seem to work but nothing shows up when there are multiple subtitle tracks. I think you mentioned you were going to put something in for future releases.
  • Performance on HEVC 1080p 2MB/s bitrate seems a little choppy in some cases, gets a bit worse when you bring up the OSD controls.
 
  • Like
Reactions: proconsule54

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
753
Trophies
1
Age
43
XP
2,679
Country
Italy
@BananaRoad Thanks for reporting this issues.

Yes the credentials has problems with special chars, i am working on it probably is due to the regex i use.
The performace issue with HEVC are known because all is done in CPU (no HW Decoding possible) so if the OSD is shwon (that takes small but some cpu) the performance decrase a bit.
For the subtitle i am working on external subtitle support, for the builtin ones with right dpad you can select subtitle tracks.
 

BananaRoad

Member
Newcomer
Joined
Dec 26, 2018
Messages
8
Trophies
0
Age
40
XP
32
Country
Canada
Thanks for pointing it out its in the menu @proconsule54 . I was in the subtitle menu when I should have been in tracks to select which sub to use.

Yea too bad about it being in CPU, hopefully there is some optimization that can be made later.
 

Djakku

Well-Known Member
Newcomer
Joined
May 9, 2019
Messages
96
Trophies
0
XP
1,175
Country
United Kingdom
Hi,

I've been meaning to to some testing with my setup.
Here is my config file
Code:
startpath = /switch/nxmp
showhidden = false
touchenable = true
playeswipeseek = 0
shortseek = 10
longseek = 60
usealang = false
alang = eng
subfontsize = 55
subfontcolor = #FFFFFF
deinterlace = no
usedb = yes
startresumeperc = 5
stopresumeperc = 5


[Network]
source = VM server |http://192.168.0.84:8000/
source = samba|smb://user:[email protected]/
source = NETWORK |http://192.168.0.84:8000/



[Main]
showhidden = true
touchenable = true
playeswipeseek = 0
shortseek = 10
longseek = 60
usealang = false
alang = eng
subfontsize = 55
subfontcolor = #FFFFFF
deinterlace = no
usedb = yes
startresumeperc = 5
stopresumeperc = 5

None of the network path work.
My http server is on different port than the default 80.
The http config was working with pplay fine.
 
  • Like
Reactions: proconsule54

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
753
Trophies
1
Age
43
XP
2,679
Country
Italy
Hi,

I've been meaning to to some testing with my setup.
Here is my config file
Code:
startpath = /switch/nxmp
showhidden = false
touchenable = true
playeswipeseek = 0
shortseek = 10
longseek = 60
usealang = false
alang = eng
subfontsize = 55
subfontcolor = #FFFFFF
deinterlace = no
usedb = yes
startresumeperc = 5
stopresumeperc = 5


[Network]
source = VM server |http://192.168.0.84:8000/
source = samba|smb://user:[email protected]/
source = NETWORK |http://192.168.0.84:8000/



[Main]
showhidden = true
touchenable = true
playeswipeseek = 0
shortseek = 10
longseek = 60
usealang = false
alang = eng
subfontsize = 55
subfontcolor = #FFFFFF
deinterlace = no
usedb = yes
startresumeperc = 5
stopresumeperc = 5

None of the network path work.
My http server is on different port than the default 80.
The http config was working with pplay fine.
i have to investigate, is the webserver an apache?
is working if set to port 80 the webserver?
(maybe i made some mistake on http with port if is working on port 80)

is samba working?
 

Djakku

Well-Known Member
Newcomer
Joined
May 9, 2019
Messages
96
Trophies
0
XP
1,175
Country
United Kingdom
i have to investigate, is the webserver an apache?
is working if set to port 80 the webserver?
(maybe i made some mistake on http with port if is working on port 80)

is samba working?
I use a simple python command that use the port 8000 by default.
Code:
python3 -m http.server

I've opened another on port 80 with but same result. It doesn't display the file list with it does on pplay.
Samba is not working as well.
FTP / NFS / UPNP I haven't tested yet.
 

Djakku

Well-Known Member
Newcomer
Joined
May 9, 2019
Messages
96
Trophies
0
XP
1,175
Country
United Kingdom
Hi again!
I've been trying to compile nxpm on my debian os just for fun but have an issue with sqlite3.
I do have the libsqlit3-dev installed but when I hit make, I got the following error.

couldn't find info on the github as to how to compile but I understand it's an ongoing project. I also recall that you were porting some libs too.

Code:
djakku@debian:~/zfield/nxmp$ make
Beta Release
gui.cpp
In file included from /home/djakku/zfield/nxmp/include/gui.h:21,
                 from /home/djakku/zfield/nxmp/source/gui.cpp:4:
/home/djakku/zfield/nxmp/source/database/SQLiteDB.h:5:10: fatal error: sqlite3.h: No such file or directory
    5 | #include <sqlite3.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[1]: *** [/opt/devkitpro/devkitA64/base_rules:14: gui.o] Error 1
make: *** [Makefile:181: build] Error 2
 
  • Like
Reactions: proconsule54

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
753
Trophies
1
Age
43
XP
2,679
Country
Italy
the libsqlit3-dev is for your system is not a library for switch.
this is the portlib i used for nxmp

it has to be in devkitpro/portlibs/switch/

There are others lib i use like libsmb2 libssh2 and so on so the build will likely fail
 

Attachments

  • sqlite-3.7.3-bin.zip
    629.7 KB · Views: 38
  • Like
Reactions: Djakku

Djakku

Well-Known Member
Newcomer
Joined
May 9, 2019
Messages
96
Trophies
0
XP
1,175
Country
United Kingdom
the libsqlit3-dev is for your system is not a library for switch.
this is the portlib i used for nxmp

it has to be in devkitpro/portlibs/switch/

There are others lib i use like libsmb2 libssh2 and so on so the build will likely fail
I worked but now does need smb2 and most likely will need libssh2 too :(
 
  • Like
Reactions: proconsule54

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
753
Trophies
1
Age
43
XP
2,679
Country
Italy
Some like libssh2 can be found using dkp-pacman command (if you are using debian with devkitpro)
others are custom port i made for NXMP

Here is a package with all the libs/includes i custom port (hope are all, let me know)

NXMP portlibs-binaries:
https://mega.nz/file/v19SAaqQ#TpaFkAjRRwfuFixhFwgplYYxFic-54g-zVszE5AxT5g

there is also the custom build of mpv and ffmpeg (with all protocols enabled (also smb and ssh2)
 

Djakku

Well-Known Member
Newcomer
Joined
May 9, 2019
Messages
96
Trophies
0
XP
1,175
Country
United Kingdom
I first copied all the files in the archives without overwriting the one I had and it did compile fine but the app wouldn't build wouldn't open any video as if the A button was not working. Then I copied the entire folders and overwrite the switchport directory and got linker error. I then reinstalled ffmpeg and freetype with pacman and while the project compile fine, Atmosphere crashes whenever i launch the app. Time to do some digging and figure out wuat is wrong with my setup. But I appreciate you sharing your libs!
 

GLegend

New Member
Newbie
Joined
Jan 2, 2022
Messages
1
Trophies
0
Age
32
XP
34
Country
United Kingdom
Hi, bit of a noob question.

Does this work with an m3u playlist from an IPTV provider?

i.e. htp://XXXXXX.net:80/get.php?username=XXXX&password=XXXXXX&type=m3u_plus&output=mpegts

If so, how do I set this up on the config file?
 
  • Like
Reactions: proconsule54

TotalJustice

Well-Known Member
Member
Joined
Jan 28, 2017
Messages
443
Trophies
0
Age
26
XP
2,595
Country
United Kingdom
The m3u need a better support, i will work on it
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
 
  • Like
Reactions: proconsule54

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    NinStar @ NinStar: :whip: