Demo
Clone or download the project.
In the terminal, run swift package resolve.
Open VideoPlayer.xcodeproj and run Demo target.
Features
Fully customizable UI.
Plays local media or streams remote media over HTTP.
Built-in caching mechanism to support playback while downloading.
Can preload multiple videos at any time.
Support seek to duration.
Simple API.
Quick Start
struct ContentView : View {
@State private var play: Bool = true
var body: some View {
VideoPlayer(url: someVideoURL, play: $play)
}
}
Advances
struct ContentView : View {
@State private var autoReplay: Bool = true
@State private var mute: Bool = false
@State private var play: Bool = true
@State private var time: CMTime = .zero
var body: some View {
VideoPlayer(url: someVideoURL, play: $play, time: $time)
.autoReplay(autoReplay)
.mute(mute)
.onBufferChanged { progress in
// Network loading buffer progress changed
}
.onPlayToEndTime {
// Play to the end time.
}
.onReplay {
// Replay after playing to the end.
}
.onStateChanged { state in
switch state {
case .loading:
// Loading...
case .playing(let totalDuration):
// Playing...
case .paused(let playProgress, let bufferProgress):
// Paused...
case .error(let error):
// Error...
}
}
}
}
Preload
Set the video urls to be preload queue. Preloading will automatically cache a short segment of the beginning of the video and decide whether to start or pause the preload based on the buffering of the currently playing video.
VideoPlayer.preload(urls: [URL])
Set the preload size, the default value is 1024 * 1024, unit is byte.
VideoPlayer.preloadByteCount = 1024 * 1024 // = 1M
Cache
Get the total size of the video cache.
let size = VideoPlayer.calculateCachedSize()
Clean up all caches.
VideoPlayer.cleanAllCache()
Installation
Swift Package Manager
Select Xcode -> File -> Swift Packages -> Add Package Dependency...
Enter https://github.com/wxxsw/VideoPlayer.
Click Next, then select the version, complete.
Requirements
iOS 13+
Xcode 11+
Swift 5+
Thanks
Banner Design by @aduqin
License
VideoPlayer is released under the MIT license. See LICENSE for details.