finds.dev← search

// the find

josejuanqm/VersaPlayer

★ 817 · Swift · MIT · updated Oct 2025

Versatile Video Player implementation for iOS, macOS, and tvOS

VersaPlayer is a Swift wrapper around AVPlayer that adds a controls UI, track selection, DRM hooks, and an extension system, targeting iOS, macOS, and tvOS. It's aimed at developers who want AVPlayer's reliability but don't want to hand-roll a controls layer, PiP support, or caption styling themselves.

The extension system (subclassing VersaPlayerExtension) keeps the core player small and lets AirPlay, ads, and overlay content live as opt-in add-ons rather than bloating the base library. Track selection for audio, video, and caption tracks is exposed as a clean property on top of AVPlayerItem's more awkward native APIs. DRM is handled via a delegate protocol rather than baking in a specific vendor, so you can wire up FairPlay or anything else without forking the library. Multi-platform support (iOS/macOS/tvOS) from one codebase, including PiP, is genuinely useful since AVPlayer's PiP setup differs enough between platforms to be annoying.

No Swift Package Manager support — it's CocoaPods and Carthage only, which is a real blocker for anyone on a modern Xcode setup that's moved away from those. The AirPlay, ads, and overlay extensions live in separate repos, so you're pulling in three more dependencies with their own release cadence and compatibility matrix rather than one cohesive package. DRM documentation is just a link to an auto-generated docs site with no inline example of a working FairPlay delegate implementation, which is exactly the part people get stuck on. The support channel is Gitter, which has been largely dead as a platform for years, so there's no real place to get help if something breaks.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →