piemonte
Player
Swift

▶️ Play and stream media in Swift

Last updated Jul 6, 2026
2.2k
Stars
350
Forks
11
Issues
0
Stars/day
Attention Score
91
Language breakdown
Swift 95.2%
Objective-C 2.8%
Ruby 1.3%
Shell 0.8%
Files click to expand
README

Player

Player

Player is a simple iOS/tvOS video player library written in Swift.

Platform Swift Version SPM Compatible Pod Version License

Need a different version of Swift?
  • 5.0 - Target your Podfile to the latest release or master
  • 4.2 - Target your Podfile to the swift4.2 branch
  • 4.0 - Target your Podfile to the swift4.0 branch

Features

  • [x] plays local media or streams remote media over HTTP
  • [x] customizable UI and user interaction
  • [x] no size restrictions
  • [x] orientation change support
  • [x] simple API
  • [x] video frame snapshot support

Quick Start

Player is available for installation using Swift Package Manager, CocoaPods, or by manually copying the Player.swift file into your Xcode project.

Swift Package Manager

Add Player to your Package.swift dependencies:

dependencies: [
    .package(url: "https://github.com/piemonte/Player.git", from: "0.15.0")
]

Or add it directly in Xcode via File > Add Package Dependencies and enter the repository URL.

CocoaPods

pod "Player", "~> 0.15.0"

Manual Installation

Simply copy the Player.swift file from the Sources directory into your Xcode project.

Usage

The sample project provides an example of how to integrate Player, otherwise you can follow these steps.

Allocate and add the Player controller to your view hierarchy.

Swift
 self.player = Player()
 self.player.playerDelegate = self
 self.player.playbackDelegate = self
 self.player.view.frame = self.view.bounds

self.addChild(self.player) self.view.addSubview(self.player.view) self.player.didMove(toParent: self)

Provide the file path to the resource you would like to play locally or stream. Ensure you're including the file extension.

Swift
let videoUrl: URL = // file or http url
self.player.url = videoUrl

For HTTP streams with custom headers, use AVAsset:

Swift
let videoUrl: URL = // http url
let headers = ["Authorization": "Bearer token123"]
let asset = AVURLAsset(url: videoUrl, options: ["AVURLAssetHTTPHeaderFieldsKey": headers])
self.player.asset = asset

For iCloud Photos or PHAsset videos, use AVPlayerItem:

Swift
let playerItem: AVPlayerItem = // your player item
self.player.playerItem = playerItem

play/pause

Swift
 self.player.playFromBeginning()

Adjust the fill mode for the video, if needed.

Swift
 self.player.fillMode = .resizeAspectFit

Display video playback progress, if needed.

Swift
extension ViewController: PlayerPlaybackDelegate {

public func playerPlaybackWillStartFromBeginning(_ player: Player) { }

public func playerPlaybackDidEnd(_ player: Player) { }

public func playerCurrentTimeDidChange(_ player: Player) { let fraction = Double(player.currentTime) / Double(player.maximumDuration) self._playbackViewController?.setProgress(progress: CGFloat(fraction), animated: true) }

public func playerPlaybackWillLoop(_ player: Player) { self. _playbackViewController?.reset() }

}

Documentation

You can find the docs here. Documentation is generated with jazzy and hosted on GitHub-Pages.

Community

Resources

License

Player is available under the MIT license, see the LICENSE file for more information.

© 2026 GitRepoTrend · piemonte/Player · Updated daily from GitHub