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 playbackytm “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:
-
sponsorblock - Auto-skips YouTube sponsors/intros/outros
curl -o ~/.config/mpv/scripts/sponsorblock.lua \ https://raw.githubusercontent.com/po5/mpv_sponsorblock/master/sponsorblock.lua
-
quality-menu - Change YouTube quality on the fly
-
autosubsync - Auto-fixes subtitle timing
-
playlistmanager - Visual playlist editor
-
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.
FrederikNJS@lemmy.zip 4 minutes ago
Holy shit… This is so incredibly out of touch… I can’t even…
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…
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?)
SMB and NFS are both servers.
Jesus, are you directly exposing SMB and NFS to the Internet? NFS is entirely unencrypted, and SMB has super scary vulnerabilities regularly…
I really hope you are patching the OS, to avoid vulnerabilities in SMB and NFS which you are exposing to the Internet…
Sure, provided the device supports hardware decoding the codec or is fast enough to software decode it…
So does both Jellyfin and Plex (plex needs a one liner config change, though, to be fair)
How about TVs? How about Mobile?
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.
Dunno… That seems like a hassle when it’s a built in feature in Plex/Jellyfin
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…
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.