this post was submitted on 09 Nov 2025
-51 points (39.4% liked)

Selfhosted

52932 readers
738 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

TL;DR: Stop running a Jellyfin server. MPV can directly play anything from your NAS, stream YouTube ad-free, handle literally every codec, and is infinitely customizable. It's like vim for video.

Why I ditched my Jellyfin setup

I used to run Jellyfin on my NAS. Transcoding, web interface, the works. Then I realized... why am I running a whole server stack when MPV can just directly play files from my NAS with zero setup?

What MPV Actually Is

MPV is a command-line video player that plays literally everything. But it's way more than that - it's a video engine you can build workflows around.

The Basics That Blow Minds

Direct NAS streaming (zero server needed):

mpv smb://192.168.1.100/media/movies/whatever.mkv
mpv nfs://nas.local/shows/season1/*

No transcoding. No server. No web interface overhead. Just direct file access with perfect quality and zero latency.

YouTube (and 1000+ sites) with ZERO ads:

brew install yt-dlp
mpv "https://youtube.com/watch?v..."

That's it. Ad-free YouTube in your video player with all your custom keybinds. Works with Twitch, Vimeo, Twitter, Reddit, literally hundreds of sites via yt-dlp.

Play entire directories:

mpv /Volumes/NAS/shows/BreakingBad/Season1/*

Boom. Instant binge session. Space bar skips to next episode. No library scanning, no metadata scraping, just files.

Workflows That Changed My Life

1. The "Watch Anywhere" Setup

Mount your NAS shares in Finder (or /etc/fstab for auto-mount). Now MPV treats your entire media library like local files. Add this to your shell config:

alias play="mpv"
alias tv="mpv /Volumes/NAS/shows/"
alias movies="mpv /Volumes/NAS/movies/"

2. YouTube as Your Streaming Service

alias yt="mpv"
alias ytm="mpv --no-video"  # audio only for music

Now:

  • yt "youtube-url" = instant ad-free playback
  • ytm "youtube-playlist" = whole playlists as audio
  • Keep your YouTube history/recommendations in browser, watch in MPV

3. Picture-in-Picture for Anything

Add ontop=yes to config, resize window small = instant PiP for any video source while you work. Works with live streams, security cameras, whatever.

4. The "No Plex Shares Needed" Share

Send someone an SMB/NFS share to your media. They install MPV. They can now browse and play your media library like it's local. No Plex accounts, no streaming limits, no transcoding quality loss.

5. Live Stream Monitoring

mpv http://192.168.1.50:8080/stream.m3u8

Home security cameras, baby monitors, anything streaming HLS/RTMP = instant monitoring with keybind controls.

Customization That Makes Jellyfin Look Basic

My Config (vim-style keybinds + YouTube controls)

Saved as ~/.config/mpv/mpv.conf:

input-default-bindings=no

> add speed 0.1
< add speed -0.1
j seek -10
k cycle pause
l seek 10
LEFT seek -5
RIGHT seek 5
UP add volume 5
DOWN add volume -5
. frame-step
, frame-back-step

m cycle mute
f cycle fullscreen
s cycle sub
a cycle audio
0 seek 0 absolute-percent
1 seek 10 absolute-percent
2 seek 20 absolute-percent
3 seek 30 absolute-percent
4 seek 40 absolute-percent
5 seek 50 absolute-percent
6 seek 60 absolute-percent
7 seek 70 absolute-percent
8 seek 80 absolute-percent
9 seek 90 absolute-percent

[ add speed -0.25
] add speed 0.25
SPACE cycle pause
ESC set fullscreen no

i script-binding stats/display-stats
S screenshot video

profile=gpu-hq
scale=ewa_lanczossharp
cscale=ewa_lanczossharp
hwdec=auto-safe
vo=gpu

screenshot-format=png
screenshot-png-compression=9
screenshot-directory=~/Downloads

cache=yes
demuxer-max-bytes=150M

osd-level=1
osd-duration=2000
save-position-on-quit=yes
keep-open=yes
alang=jpn,jp,eng,en
slang=eng,en

ytdl-format=bestvideo[height<=1080]+bestaudio/best

Profiles for Different Content

[anime]
profile-desc="Anime settings"
deband=yes

[lowpower]
profile-desc="Laptop battery mode"
profile=fast
hwdec=yes

Use with: mpv --profile=anime episode.mkv

Scripts That Make It Insane

MPV supports Lua/JS scripts. Drop them in ~/.config/mpv/scripts/ and they just work.

Must-have scripts:

  1. sponsorblock - Auto-skips YouTube sponsors/intros/outros

    curl -o ~/.config/mpv/scripts/sponsorblock.lua \
      https://raw.githubusercontent.com/po5/mpv_sponsorblock/master/sponsorblock.lua
    
  2. quality-menu - Change YouTube quality on the fly

  3. autosubsync - Auto-fixes subtitle timing

  4. playlistmanager - Visual playlist editor

  5. mpv-discordRPC - Show what you're watching on Discord

Advanced Workflows

Watch Parties (Syncplay)

Install syncplay, point it at MPV, now you and friends watch your NAS content together in perfect sync. No Plex share limits, no quality loss.

Audio Streaming

ytm "youtube-playlist-url"
# or
mpv --no-video /Volumes/NAS/music/*

No GUI needed. Terminal command plays audio, you use keybinds (k=pause, j/l=skip, etc). Or just minimize and use as background music player.

For GUI: IINA (Mac) is literally just MPV with a pretty interface and uses your MPV config.

Frame-by-Frame Analysis

Built-in keybinds (. and , in my config) step forward/back frame-by-frame. Perfect for animation analysis, sports breakdown, debugging video issues.

Automated Workflows

# Watch anything in clipboard
mpv $(pbpaste)

# Random episode
mpv "$(find /Volumes/NAS/shows -name "*.mkv" | shuf -n1)"

# Continue last watched (auto position restore)
mpv /Volumes/NAS/shows/CurrentShow/*

Why This Beats Jellyfin For Me

Pros:

  • Zero server maintenance
  • No transcoding = perfect quality
  • Plays literally any codec without setup
  • Way faster (direct file access)
  • Keyboard-driven workflow
  • Works offline/online seamlessly
  • Infinitely scriptable
  • Cross-platform (Linux/Mac/Windows)

Cons:

  • No pretty web UI (I consider this a pro)
  • No user management (just use OS permissions)
  • No watch tracking (unless you script it)
  • No mobile app (VLC on phone + SMB works though)

Who This Is For

  • You're comfortable with terminal/config files
  • You want maximum quality (no transcoding ever)
  • You prefer keyboard controls
  • You value simplicity over features
  • You already have a NAS/file server
  • You want YouTube ad-free without browser extensions

Getting Started

# macOS
brew install mpv yt-dlp

# Linux
sudo apt install mpv yt-dlp

# Windows
scoop install mpv yt-dlp

Create config at:

  • Mac/Linux: ~/.config/mpv/mpv.conf
  • Windows: %APPDATA%/mpv/mpv.conf

Mount your NAS shares, point MPV at files. Done.

Resources


EDIT: Holy shit, didn't expect this response. Common questions:

Q: But I need to share with family who aren't technical A: IINA (Mac) or mpv.net (Windows) give them a normal GUI that uses MPV underneath. Or just... teach them? play movie.mkv isn't rocket science.

Q: What about mobile? A: VLC on phone + SMB share to your NAS. Or just use MPV on desktop/laptop like a civilized person.

Q: No watch history tracking? A: save-position-on-quit=yes remembers position per file. For tracking across devices, write a simple script or just... remember what you watched?

Q: This sounds like gatekeeping A: It's literally a config file. If you can set up Jellyfin, you can handle this.

all 48 comments
sorted by: hot top controversial new old
[–] RightEdofer@lemmy.ca 3 points 2 days ago

This reads like an AI generated influencer fever dream. Insane1! MPV is a good project but I recently ended up not using it because Jellyfin for video has so many more features- kind of apples to oranges. I can’t imagine an MPV setup would ever approach a Jellyfin/Infuse setup - especially for non-technical family members. I ended up going Navidrome for music because of outside network access and the ability to download music offline which MPV can’t really do to my knowledge.

[–] zqwzzle@lemmy.ca 129 points 5 days ago (1 children)

Q: But I need to share with family who aren't technical
A: IINA (Mac) or mpv.net (Windows) give them a normal GUI that uses MPV underneath. Or just... teach them? play movie.mkv isn't rocket science.

Spoken like somebody that hasn’t been stuck with family tech support or tech support in general.

[–] gungho4bungholes@lemmy.world 7 points 3 days ago

Tell me you’re not married without telling me you’re not married

[–] FrederikNJS@lemmy.zip 24 points 4 days ago

Holy shit... This is so incredibly out of touch... I can't even...

The Basics That Blow Minds

Lol no... yt-dlp is a bit nifty, but everything else here is utterly expected of any media solution... Exactly zero minds were blown here...

No transcoding

Damn that sucks when the destination device isn't capable of hardware decoding the media file, and too slow to software decode it... (also, you do know that you can just disable transcoding in Plex/Jellyfin, right?)

No server

SMB and NFS are both servers.

Send someone an SMB/NFS share to your media

Jesus, are you directly exposing SMB and NFS to the Internet? NFS is entirely unencrypted, and SMB has super scary vulnerabilities regularly...

Zero server maintenance

I really hope you are patching the OS, to avoid vulnerabilities in SMB and NFS which you are exposing to the Internet...

Plays literally any codec without setup

Sure, provided the device supports hardware decoding the codec or is fast enough to software decode it...

Works offline/online seamlessly

So does both Jellyfin and Plex (plex needs a one liner config change, though, to be fair)

cross-platform

How about TVs? How about Mobile?

Or just... teach them? play movie.mkv isn't rocket science.

My mom has needed to call me and be guided over the phone 100% of the times that she has needed to scan a document... How do you think teaching her to navigate a file structure in a terminal is going to go?

My daughter still needs us to spell out the cheat codes for her The Sims game... Do you think she'll remember the terminal commands.

If I forced any of my friends and family to use the command line to play media, they would just watch something else from a streaming service that actually offers some User Experience... Or do something else entirely.

write a simple script or just... remember what you watched?

Dunno... That seems like a hassle when it's a built in feature in Plex/Jellyfin

It's literally a config file. If you can set up Jellyfin, you can handle this.

No... It's a config file per device, and SMB/NFS mounts per device. Now you need to handle syncing that config file, and any other user of the server will need their own config files...

... And what about other features...

  • How do you browse metadata for your movies and series? I often like to read a summary about a movie to know a bit about what to expect. I also like being able to search for an actor, and see the cover art.
  • How do you group your movies with the extra features for that movie?
  • How do you stream your media to your TV?
  • How do you easily fetch subtitles for a movie that didn't come with any subtitles?
  • When you are away from home on a heavily bandwidth constrained connection, how do you watch your nice high-quality movies?

Back when I lived alone, attaching my media drive directly to my desktop computer made perfect sense, it was the only screen I owned that I wanted to watch anything on... And I didn't need to share anything with anyone... And I could easily use mpv or vlc to watch anything I want...

But now that other people are in the mix, and I like the convenience of using whichever screen I'm currently near, a simple network share + mpv falls so far short it isn't even funny.

[–] napkin2020@sh.itjust.works 18 points 4 days ago

what the fuck is this ai slop shit?

[–] atzanteol@sh.itjust.works 58 points 5 days ago (1 children)

I'm happy you're discovering the Linux CLI, but this is pretty ridiculous. mpv, vlc, mplayer, etc. all serve very different uses from jellyfin.

[–] tribut@infosec.pub 17 points 5 days ago

This post should be in the dictionary under Chesterton's fence.

[–] curbstickle@anarchist.nexus 72 points 5 days ago

There is a whole lot to jellyfin that mpv doesnt cover.

I'm glad youre enjoying the setup, but its hardly a replacement for jellyfin in the vast majority of cases.

[–] eldereko@lemmy.dbzer0.com 66 points 5 days ago (1 children)

the point of jellyfin and Plex is that it plays everywhere, ie. TV, mobile, remotely; not just on a PC connected to local network. although neat, this is far from a replacement for a media manager/remote streamer

[–] MangoPenguin@lemmy.blahaj.zone 57 points 5 days ago

I set up Plex/Jellyfin specifically to get away from having to manage media manually, it tracks watch states, gets subtitles, transcodes for me when I'm traveling, and does all of that for family too.

MPV is neat but its just a standard media player app like VLC, not really anywhere near the same concept as Jellyfin.

[–] eleijeep@piefed.social 42 points 5 days ago (1 children)

You wrote this shit with an LLM, didn't you?

[–] flightyhobler@lemmy.world 32 points 5 days ago

Q: But I need to share with family who aren't technical A: IINA (Mac) or mpv.net (Windows) give them a normal GUI that uses MPV underneath. Or just... teach them? play movie.mkv isn't rocket science.

LoL . You're completely out of touch with reality

[–] _cryptagion@anarchist.nexus 43 points 5 days ago

wut the fuck. I use Jellyfin because I don't want to have to do shit by hand. I fucking click the grab button in Jellyseer and then press play. if I wanted harder than that, I wouldn't bother setting up a media server in the first place.

[–] Onomatopoeia@lemmy.cafe 25 points 5 days ago* (last edited 5 days ago) (1 children)

So, let me get this straight - you're saying using command line to play video instead of a gui?

Tell me, how does one do this on a TV? On an iPad? Phone?

Your excitement for command line belies an experience of nothing but GUI, so it's something of a novelty to use command line.

Dude, get ahold of yourself. I probably wrote more command line stuff before you were born than you've ever thought of - I'm not going backwards.

(As a clue, wrote my first Fortran program before PC's were even a thought at IBM).

Fuck cli except for managing systems. Even then quite often gui is faster by orders of magnitude, mostly to kickoff scripts to do what I need. GUI was a godsend, and Xerox Parc's efforts created a common GUI language for us, thankfully was embraced. I refuse to go backwards.

And forcibly teach non-technical people to use CLI?

You are exactly the type of person that Saturday Night Live lampooned decades ago.

[–] mhzawadi@lemmy.horwood.cloud 32 points 5 days ago (1 children)

Just putting it out there, as a Linux sysadmin for over 400 VMs. Even I don't want to be cli running my media, that's why I use jellyfin.

It's good that people know you can do it, but most won't as they just want to click a button to get going.

[–] flightyhobler@lemmy.world 7 points 5 days ago

Completely agree.. I can see myself doing this years ago when I had nothing better to do. But not doing it for long. And don't get me started on the convenient subtitles download and sync in Jellyfin!

[–] Nibodhika@lemmy.world 9 points 4 days ago

It would be very tedious to type all of that on my TV, even if I could get mpv on it, and my TV/projector had hardware capabilities to decode the media, not to mention the difficulty in keeping my history between different devices or for different people. You're clearly not understanding the problem Jellyfin solves, it's like someone saying "why do we need Lemmy when we can write files on our samba shares" (which btw you should definitely not expose to the internet)

[–] muzzle@lemmy.zip 14 points 4 days ago* (last edited 4 days ago)

If you think this replaces jellyfin you probably have no ability to put yourself in other people's shoes and your post tells us more about yourself than about the software you wax lyrical about.

[–] chrash0@lemmy.world 34 points 5 days ago (1 children)

i mean… sure. some neat tricks in here i wasn’t aware of, but asking my mom to open the terminal… i mean it’s not rocket science but that doesn’t make it accessible. all the scripting and stuff that you’re talking; that stuff comes in the Jellyfin box. honestly, it might be worth it to have both if you have users that aren’t comfortable in the terminal

[–] mudkip 0 points 5 days ago
[–] sj_zero@lotide.fbxl.net 15 points 4 days ago

This really seems like an AI generated article to, in a very complicated way, describe of what was until fairly recently just the status quo.

Until fairly recently, if you had network attached storage you could just play the media off of the network storage. That's just how it worked. People playing media through the command line is something people have been doing for decades. What happened later was the introduction of services like jellyfin that would streamline the process.

Overall, other than the extremely hyperbolic language promising to completely change your life by letting you do things the way that they were done decades ago, it reads like "you may not like cars, but let me introduce you to an amazing new technology known as walking" presented without any irony.

[–] dan@upvote.au 24 points 5 days ago* (last edited 5 days ago)

If you want to play files over SMB, you can just open the SMB mount in the file explorer and double click it. On Windows you can mount it as a network drive (like V: for videos) so even non-technical users understand it. I don't understand how mpv is easier for that use case.

With systems like Jellyfin and Plex, you can (and should!) turn off transcoding when streaming at home. The only times you should enable transcoding are when:

  1. You're away from home on a slow internet connection (or your home internet has slow upload speed); or
  2. You're streaming to a less powerful device that can't handle the full bitrate of the video.

Transcoding is very useful, because otherwise you'd need multiple copies of the same movie to handle different environments. Transcoding can dynamically adjust the bitrate based on the connection speed.

[–] witness_me@lemmy.ml 23 points 5 days ago* (last edited 5 days ago)

mpv is cool and all, but it’s not going to play media on my Apple TV which is using Jellyfin via Infuse.

[–] CoyoteFacts@piefed.ca 23 points 5 days ago

I just want to note that Jellyfin MPV Shim exists and can do most of this MPV stuff while still getting the benefits of Jellyfin. You're putting a lot of emphasis on Plex-specific limitations (which Jellyfin doesn't have obviously) and transcoding (which is a FEATURE to stopgap an improper media player setup, not a limitation of Jellyfin).

Pretty much every single "Pro" is not exclusive to pure MPV vs. Jellyfin MPV Shim, which mainly leaves you with the cons. Also as another commenter said, I set my Jellyfin up so that my friends and family can use it, and that's its primary value to me. I feel like a lot of this post should be re-oriented towards MPV as a great media player, not against Jellyfin as a media platform.

[–] hendrik@palaver.p3x.de 10 points 5 days ago* (last edited 5 days ago)

Btw, the proper place to mount filesystems is either /media or /mnt. I wouldn't create a directory called /Volumes in Linux. And pay attention, these are case-sensitive and most (not all) system directories have agreed on using lower-case letters only. And "volume" is kind of a Windows and MacOS-term anyway, I rarely see Linux-people refer to media and filesystems that way.

[–] melmi@lemmy.blahaj.zone 11 points 5 days ago (1 children)

The UX just isn't there for MPV. Jellyfin isn't always ideal but it gives an interface roughly on par with a streaming service. Why should I replace that with a tool like MPV? I don't need keyboard controls, I watch from my couch. It seems like all downsides to me.

[–] EccTM@lemmy.ml 1 points 5 days ago

I use this custom UI called uosc with MPV and its pretty decent.

Definitely agree that mpv isn't a jellyfin replacement though.

[–] sonofearth@lemmy.world 8 points 5 days ago

You are technically right but as a human who just wants to watch “The Devil Wear’s Prada” after a long day at work it would be too frustrating.

You have to go through more clicks and more typing to play your media on MPV. On the other hand I can just use my remote to browse through my Jellyfin library after just opening an app.

[–] ironicbadger@techhub.social 6 points 5 days ago (1 children)
[–] mudkip 0 points 5 days ago (2 children)
[–] SnoringEarthworm@sh.itjust.works 8 points 5 days ago (1 children)

The rocket science button, apparently.

[–] ironicbadger@techhub.social 1 points 5 days ago

@mudkip it works now *shrug*

[–] artyom@piefed.social 3 points 5 days ago* (last edited 5 days ago)

Cons: No pretty web UI (I consider this a pro)

...considered a pro but listed under cons...?

Anyway, you can fix that with Euphonica

[–] cardbord_box@lemmy.sdf.org 2 points 5 days ago

Great writeup! You are correct that the skeleton is there in a "unix philosophy" manner. Depending on preferences and use cases, it could be perfectly functional.

When I was first getting my media server going I experimented with a more minimal solution like this. Eventually I went with jellyfin and kodi as a client on some devices. I like all the structure. Jellyfin is a bit of a drag to use due to bloat. Kodi is lighter on the client end.

I shared my files via SMB on the local network. First used VLC player to watch on mobile. It's robust. There is also an android MPV player available if you wish. If you have a lot of media it gets tiresome to navigate throug with either of those. Nova Video Player does some of stuff you'd normally offload to a server like remembering what you've already watched. So that was good, but then instead of having the bloat on the server, you have bloat on the phone, which is less convenient. I disagree that consuming media solely via a PC is civilized. It's tolerable in certain situations.

If you have other people to share with who aren't inclined this way, it's kind of a jerk move to force them to accommodate this aesthetic preference. Even if not wanting to run jellyfin there are sleeker media serving solutions available for a middle ground. If it's just for yourself and other kindred spirits, then no reason not to indulge in the minimalism to whatever degree you find satisfying.

[–] fushuan@lemmy.blahaj.zone 1 points 4 days ago

Yeah nah, you won't start doing all that stuff with a tv controller to swap the tv app.

[–] fushuan@lemmy.blahaj.zone 1 points 4 days ago

Yeah nah, you won't start doing all that stuff with a tv controller to swap the tv app.

[–] Auli@twit.social 1 points 5 days ago* (last edited 5 days ago)

@mudkip Really the article is kind of a lot of hot air. Comparing MPV to Jellyfin come on. Oh I can play the video anywhere I just have to mount the folders. Yah that's easier then running Jellyfin. Or play anywhere ok play it on a Roku TV.

And why not just mount folder and click on file. I discovered this really cool app called VLC.

[–] a@852260996.91268476.xyz 1 points 5 days ago

@mudkip@lemdro.id this is fascinating. I honestly don't think would use it, but definitely interesting to learn you can pass a youtube link to mpv and will play it.

[–] net00@lemmy.today 0 points 5 days ago

I use a very similar setup, and with a custom UI mpv looks even better. Even on mobile I use an app with libmpv backend which plays my NAS media and anything I throw at it. Also, the ability to smoothly scrub video, especially on touchscreens is a very rare treasure among video players but mpv handles it with no struggle...

I guess jellyfin is for those who want a netflix experience with movie posters, descriptions, and lots of QoL