Playee: my own video player for macOS

A native Mac video player my AI agent built to replace VLC and IINA. It opens 4x faster, uses 5x less memory than VLC, and adds frame grabs for my notes, bookmarks and 2-key clip export.

The Playee app icon: a white play triangle holding the red edelweiss logo on a magenta gradient, with the name Playee under it

31 Oct 2026

Playee is the video player I now use on my Mac. I double-click an MP4 or a MOV, and it plays centred on my main screen at its native size, 1 video pixel to 1 screen pixel, in a window with nothing over the picture. It replaces VLC and IINA for the files I open every day: meeting recordings, camera recordings from the studio, and videos I download with Tubee: my own video downloader for macOS.

I didn't write the code. I asked whether my own player made sense, answered 44 questions, and my AI agent (Claude Code) measured 2 engines, wrote the spec, built the app, tested it and installed it in 1 night, on 31st October 2026. The why is in The era of personal software is here.

Every screenshot in this note uses dummy data: an invented "Northwind Labs" slide recording, rendered by the app's own test harness.

Playee in dark mode playing a dummy pricing slide: the bookmarks panel on the right lists 5 bookmarks with thumbnails and notes, the seek bar shows white bookmark markers and a highlighted in-to-out range, and the control bar shows the remaining time, the range and the picture details 1920×1080, H.264, 30 fps

Why my own player

VLC and IINA both play anything. But 4 things bothered me:

  • They're slow to open. About 2.5 s for VLC and 2.9 s for IINA from double-click to window, on a Mac Studio.
  • They're heavy. IINA used 475 MB of memory to play a 1080p file.
  • Frame grabs stop at the file. My 2022 note Automating video screenshots asked for 1 key that saves the frame with the title and the time in the name, and puts a ready-to-paste snippet for my notes on the clipboard. Neither player does the second part.
  • No marks. I review long recordings. I wanted to bookmark moments with a note, and to cut a clip with 1 key for the start and 1 for the end.

Before the build, the agent read my settings in both players. My key map in IINA was VLC's map plus 4 changes, so Playee ships that map as its default. My hands didn't have to learn anything.

The engine decision

IINA is a nice interface on top of mpv. The obvious plan was to do the same. Instead, the agent built a small test app with both engines, mpv's libmpv and Apple's AVFoundation, and measured them on the same files:

Test (1080p H.264) AVFoundation libmpv
Launch to first frame 710 ms 950 ms
Memory while playing 20 MB 160 MB
Exact seek 44 ms 143 ms
1 frame back 1 ms 309 ms

AVFoundation won every test on every file it can play. The cost: it can't open MKV, WebM or AVI. I had 1 MKV file and no WebM or AVI, so those stay with VLC. The frame-back result mattered most to me: VLC can't step back at all, and mpv needs a third of a second for each step.

What it does

Feature How it works
Native size Opens centred on my main screen at 1:1 pixels. ⌘2 doubles, ⌘0 halves, ⌘1 goes back
My key map VLC's seek keys (3 s, 10 s, 1 min, 5 min), ⌥← and ⌥→ step 1 frame, ⌘= and ⌘- change the speed
Frame grab ⌘S saves the exact frame as YYMMDD-HHMMSS-title.jpg and copies the image
Grab for a note ⌥⌘S also copies the image into my notes and puts the <img> snippet on the clipboard
Bookmarks b marks the frame, ⇧B adds a note, ] and [ jump between them, ⌫ deletes, ⌘Z undoes
Bookmarks to Markdown ⇧⌘B copies the list for a note; ⌥⌘B adds 1 frame grab per bookmark
Clips i sets the start, o the end, ⌘E exports an MP4, ⌘L loops the part
Picture details Resolution, codec, frame rate, bitrate and size in the control bar, every detail with ⌘I
Resume Files over 5 minutes start 3 s before where I stopped, even after a rename. No viewing history
Command centre ⌘K lists every command with its key, with a fuzzy search
Light and dark The panels follow the system; the picture is always black

The Playee command centre over a dummy slide: the search reads clip and lists Export clip, Export clip and show in Finder, Export clip exact, Clear in and out and Loop in to out, each with its keyboard shortcut as small key caps

Clips that cut where I marked

A plain cut with ffmpeg copies the video from the nearest keyframe, so a clip can start seconds before the moment I marked. Playee checks the keyframes first. When the start sits on a keyframe, it copies the stream: instant, no quality loss. When it doesn't, it re-encodes clips up to 3 minutes with the Mac's hardware encoder, for an exact cut: 0.7 s for a 3 s clip in testing. Longer clips copy from the keyframe before the start and say how many seconds early they begin. The clip lands on the clipboard as a file, ready to paste into an email or Teams.

Built for my notes

⌥⌘S saves the frame, copies it into my notes images folder and puts this on the clipboard:

<img class="screenshot" src="https://ik.imagekit.io/vhucnsp9j1u/images/grabs/261031-142233-northwind-quarterly-review.jpg" alt="Northwind quarterly review at 24:40"/>

⌥⌘B does the same for every bookmark of the file and builds a Markdown list with the time codes. For a video I downloaded from YouTube, each time code links to that moment on YouTube.

Playee against VLC and IINA

Bar chart of Playee against VLC and IINA on the same Mac and file: open to window 0.63 s for Playee, 2.55 s for VLC and 2.85 s for IINA; memory while playing 27 MB, 145 MB and 475 MB; CPU while playing 3.7%, 11.7% and 34.5%

Need VLC IINA Playee
Open a 1080p MP4 2.55 s 2.85 s 0.63 s
Memory while playing 145 MB 475 MB 27 MB
Step 1 frame back No Yes Yes, in 3 ms
Grab to a note snippet No No 1 key, 25 ms
Bookmarks with notes No No Yes, with Markdown export
Clip export Recording workaround No 2 marks and ⌘E
MKV, WebM, AVI Yes Yes No: VLC opens them

Playee's CPU number counts its own process. AVFoundation decodes in a macOS system process, so part of the decoding work isn't in that number. The memory and launch numbers are like for like.

What I gave up

  • MKV, WebM and AVI. AVFoundation can't play them. Playee offers "Open in VLC" with ↩ when a file doesn't play.
  • Subtitle and audio delay, and side-car .srt files. AVFoundation has no control for them. Embedded subtitle and audio tracks work.
  • Volume above 100%. VLC's boost has no AVFoundation equivalent.

For my AI agents

Like every app I build, Playee has a command line that my agents use without touching the screen:

playee open ~/Movies/demo.mp4 --at 12:41
playee grab --note
playee bookmark add --at 12:41 --note "Pricing objection"
playee clip --in 12:41 --out 14:03

A debrief task can now open a call recording at the right moment, grab the slide on screen and cut the 2 minutes that matter, then put all 3 in a note.

Built with

The tool that built it:

NicAI
Written by NicAI, Nic's AI assistant, for his personal knowledge base. Researched and drafted by the model, not hand-written by Nic. Verify anything you plan to act on.