this post was submitted on 09 Nov 2025
35 points (58.5% liked)

Technology

76834 readers
4087 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related news or articles.
  3. Be excellent to each other!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
  9. Check for duplicates before posting, duplicates may be removed
  10. Accounts 7 days and younger will have their posts automatically removed.

Approved Bots


founded 2 years ago
MODERATORS
 

cross-posted from: https://lemdro.id/post/31558391

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.

top 50 comments
sorted by: hot top controversial new old
[–] deadcade@lemmy.deadca.de 21 points 6 days ago* (last edited 6 days ago) (1 children)

MPV is great, I use it all the time. It's fully replaced VLC on my desktop.

It is not an "alternative to Jellyfin". It does not offer many "comfort features" like (synced ootb) watch tracking. It does not transcode at all, and it doesn't even run on devices that need transcoding most, like smart TVs.

These two applications fall into two different categories, and they will never replace each other. One is a media player, you throw mpv any video file, it puts it up on screen, great. The other is a media server, it allows you to sign in, browse your nicely organized library, and click play on the movie of your choice, very cool.

Even the idea of opening SMB or NFS to the entire internet just so your most technical of friends can manually download and watch a movie is insane compared to setting up Jellyfin. Reminder, not everyone has the connection to stream a full 4k bluray rip, transcoding allows those users to watch at all.

Besides,

Screenshot of a tweet by user @haydendevs stating “this is who you’re arguing with online”, and an attached image of a series of dots connected by lines. This is the often used visual representation of a “neural network” in machine learning.

[–] phoenixz@lemmy.ca 1 points 6 days ago (1 children)
[–] deadcade@lemmy.deadca.de 2 points 6 days ago

I'm going to assume you're unable to see the embedded image. I didn't add alt text, that's my mistake.

Below "Besides", there is a screenshot of a tweet by user @haydendevs stating "this is who you're arguing with online" and an attached image of a series of dots connected by lines. This is the (overused) visual representation of a "neural network" in machine learning. The meaning of the image in this context is to state you are arguing with bots or AI online. I used this twitter screenshot as an attempt to make a joke of the fact the OP reads like AI-generated text.

I will edit the alt text in my comment above.

[–] Couldbealeotard@lemmy.world 19 points 6 days ago (1 children)

The whole point of jellyfin/Plex is to provide a feature rich UI for your video files on your hard drive. This is walking back from that to the point that you may as well just use vlc and map network drives on windows. Heck, just carrying around a SSD full of videos is easier than this.

Yeah, I don't see how this is better than mounting the drive and using whatever I normally use.

My primary use for Jellyfin is:

  • stream to TV - used to use minidlna, Jellyfin is a strict upgrade
  • web page - mostly for my SO, who already has samba configured and doesn't use it

For YouTube, I just use NewPipe or Grayjay on mobile, and YouTube directly on web (uBlock blocks YT ads perfectly).

This looks cool, just not something I'd ever consider.

[–] northernlights@lemmy.today 3 points 5 days ago

So you just... run Samba and/or NFS over internet? That's pretty bad.

[–] IzzuThug@lemmy.world 3 points 5 days ago

So many wrong and misinformed comparisons....

[–] Pika@rekabu.ru 4 points 6 days ago

Nice! Now, this is absolutely a niche solution anyhow, but it's an option.

Glad you found your secret sauce!

[–] sunshine@lemmy.ml 1 points 6 days ago

what's the easiest client situation for a setup like this? do you basically need to be visiting the server address using a web browser, so you can stream on a laptop or maybe awkwardly on something like a steam deck?

[–] gandalf_der_12te@discuss.tchncs.de 1 points 6 days ago (1 children)

Holy shit this sounds fantastic!

Only issue i have is mpv seems to use its built-in yt-dlp which is an old version that youtube is blocking now. I have a newer version of yt-dlp installed on my computer, but mpv does not seem to use that. What can i do?

[–] mudkip 1 points 6 days ago (2 children)

Try this: ytdl-path=/usr/bin/yt-dlp

in mpv.conf

[–] gandalf_der_12te@discuss.tchncs.de 1 points 5 days ago* (last edited 5 days ago)

thanks, i figured it out. i had multiple older versions of youtube-dlp and yt-dlp installed on my machine. once i removed them, it worked.

the contents of my ~/.config/mpv/mpv.conf file is now:

script-opts=ytdl_hook-ytdl_path=/home/user/.bin/yt-dlp
[–] bjorney@lemmy.ca 93 points 1 week ago (2 children)

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

Instructions on how to switch to HDMI 1 are currently taped to the back of my mom's TV remote

[–] axx@slrpnk.net 8 points 6 days ago* (last edited 6 days ago)

The obliviousness to the layers of knowledge and understanding to comfortably issue play movie.mk is impressive honestly.

[–] Peffse@lemmy.world 46 points 1 week ago* (last edited 1 week ago) (1 children)
[–] brsrklf@jlai.lu 26 points 1 week ago (2 children)

Most remote design is honestly atrocious. Somehow they keep hiding "source" in random spots, when it should be one of the most important buttons. The obscure pictograms are all over the place, and most buttons will never be used by anyone.

[–] demonsword@lemmy.world 4 points 6 days ago

It's even worse when your remote is covered with buttons to Netflix, YouTube, Prime and other random bullshit streaming services. I physically removed two rows of buttons from the remote of the TV I bought last year, after accidentally pushing some of them too many times

[–] Peffse@lemmy.world 10 points 1 week ago (3 children)

One of my favorite remotes had the sources split across the top. Composite, Component, VGA, HDMI. And if you hit the button twice it'd cycle through the different ports of that type.

Never found a remote like that again. Now they just throw a menu to slowly browse through.

[–] filcuk@lemmy.zip 2 points 6 days ago* (last edited 6 days ago) (1 children)

God how can those tv menus be so slow... do they (try to) call home on every press of a button?? Infuriating

[–] Mondez 1 points 5 days ago

They run their own full OS these days on under powered SoCs to cut costs. All so they can claim to be a "smart" TV until of course the flow of updates stops a year after manufacture and all the apps stop working. Then it's back to being dumb as well as being a massive security hole on your network.

[–] Flisty@mstdn.social 0 points 6 days ago* (last edited 6 days ago)

@Peffse @brsrklf our ancient Blaupunkt has a variant of this: https://interlook.eu/product-eng-3115-Universal-remote-control-for-BLAUPUNKT-TV-TV-support-SMART.html . Alas, the ones you actually need are the HDMI ports, which they don't give you.

load more comments (1 replies)
[–] Mondez 71 points 1 week ago (3 children)

That was a long winded way of saying you don't know what Jellyfin actually is or does. Mpv is a client, it only fills the role that the various Jellyfin clients perform and a better comparison would be against a heavier weight media player such as Kodi.

What you suggest works well enough if you have a reliable network link to share CIFS or NFS over, but what do you do when away from home on a rubbish link that doesn't have bandwidth to stream all your high quality bluray rips? You want transcoding in that situation.

Also, I'm a seasoned Unix sysadmin who knows his way around the cli and I can say with certainty this isn't for people who know the cli, it's for people who just want to prove you can do anything from the cli even if suboptimal.

It misses the primary use case for me: streaming to TV. I used to use minidlna, but the UX on my TV sucked, and Jellyfin was a pure upgrade. I can count the times I've watched more than 30a of my media (to test something) on anything other than my TV on one hand, and all of those are on a tablet using cached files.

If I did watch media on my laptop or desktop, I'd mount a network share and use VLC or something.

[–] axx@slrpnk.net 4 points 6 days ago

Thanks for this.

It really misses the point of why you'd want Jellyfin in the first place. Share a link to a film and give people the optionoption to watch it? Read something about a film before deciding toto watch it? Start watching something on Kodi then finish it later on your laptop?

How would mpv answer any of these…?

[–] T156@lemmy.world 2 points 6 days ago* (last edited 6 days ago)

Or if you have good hardware that doesn't need the transcoding. If I was loading up h265 video on my server, I'd need to convert it to h264 or something else compatible if I wanted to use it with my iPad, since it's old enough it doesn't support doing anything but software decoding of that codec, and it doesn't have the strongest processor.

[–] deranger@sh.itjust.works 70 points 1 week ago (2 children)
  1. 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.

Yeah, that’s not tenable for anyone but the nerdiest users. None of my users know what an SMB share is. They know Plex is the icon they click on to watch the movies I get them.

I’m glad this exists but the Netflix-like experience Plex offers is key to adoption by normal people. Aside from the yt-dlp integration, it sounds like DLNA sharing via PMS or XBMC from way back.

My SO is reasonably technically inclined, and still keeps forgetting they have the SMB share on there. It's literally a folder like any other on their PC.

They do remember both the IP/port (our TV sucks and loses WiFi periodically, and Jellyfin forgets the info) and the URL (can't use TLS on the TV apparently...). And that inconvenience is way less of an issue than dealing with an already mounted SMB share.

So yeah, MPV is a nonstarter.

[–] ragepaw@lemmy.ca 8 points 1 week ago

I have a buddy who won't switch his streaming box because he thinks his in-laws will be too confused by a different button layout on the remote.

[–] acosmichippo@lemmy.world 49 points 1 week ago* (last edited 1 week ago) (1 children)

you are way overthinking it my friend. running a docker container for jellyfin is not a big deal and requires virtually no maintenance. lots of QOL improvements too like tracking watched status, playlists, metadata, clients that run on an actual television, etc, etc.

[–] Twinklebreeze@lemmy.world 14 points 1 week ago

The watched status is reason enough for me to use it. Having to remember what episode you watched last for 4+ shows at a time is annoying.

[–] adespoton@lemmy.ca 43 points 1 week ago (6 children)

I’m still trying to figure out why I should stop running a jellyfin server. It does all this too, and I just had to deploy a docker container and point it at my NAS.

load more comments (6 replies)
[–] dbtng@eviltoast.org 40 points 1 week ago (2 children)

This was painful to read. Yuck. It was written like clickbait. Like AI writes. Yuck.
And of course it was crossposted. If you've got something you need everyone to know, you gotta crosspost it everywhere.

load more comments (2 replies)
[–] victorz@lemmy.world 29 points 1 week ago (5 children)

Can't run mpv on my TV though.

[–] ReallyActuallyFrankenstein@lemmynsfw.com 20 points 1 week ago (1 children)

[Grab shoulders and shake violently enough to cause Shaken Adult Syndrome]

BUT IT'S SO VERSATILE! STOP SLEEPING ON IT!

load more comments (1 replies)
load more comments (4 replies)
[–] exu@feditown.com 25 points 1 week ago

Reminds me of this HackerNews classic how you don't need Dropbox and all functionality can be replicated trivially using FTP.

Glad MPV works for you, shut up about the gatekeeping

[–] ImgurRefugee114@reddthat.com 21 points 1 week ago

I dailydrive a heavily configured MPV and I've got a lot of complaints about jellyfin, but this is a no-go for sharing for the vast majority of people.

[–] Chronographs@lemmy.zip 15 points 1 week ago

You know that mpv is what plex actually uses to play the content right? At least on desktop. A lot of my users (almost all actually) are watching things via the smart tv app or their phones/tablets etc. Watch states are tracked between them and for the most part it just works.

[–] tidderuuf@lemmy.world 9 points 1 week ago (1 children)

Who This Is For

  • You're comfortable with terminal/config files

Aaand I'm out. It looked fun until I got to all the work I would need to do.

[–] fernandofig@reddthat.com 16 points 1 week ago* (last edited 1 week ago) (1 children)

I'm comfortable with the terminal and messing around with config files.

I still rolled my eyes at how the user seem to have no understanding of what's the actual convenience that Plex/jellyfin provides. Hint: playing/streaming videos is the least of them.

Yup, I use the terminal every day at work, my workflow is VIM + tmux, and I self hosted a Minecraft server using systemd (and a bunch of other stuff), so CLIs are kinda my thing.

I don't use MPV. Why? I watch my content on my TV. If I'm on my computer where MPV could be used, I'll play video games or work on personal projects, not watch content. Jellyfin is easy enough that I had to block the app on my TV since my 3yo was watching it before I got up. It works really well, it's easy to set up, and even a child who can't read can use it.

What does MPV provide?

load more comments
view more: next ›