- Clone or download the project.
- In the terminal, run
swift package resolve
. - Open
VideoPlayer.xcodeproj
and runDemo
target.
- 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.
struct ContentView : View {
@State private var play: Bool = true
var body: some View {
VideoPlayer(url: someVideoURL, play: $play)
}
}
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...
}
}
}
}
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
Get the total size of the video cache.
let size = VideoPlayer.calculateCachedSize()
Clean up all caches.
VideoPlayer.cleanAllCache()
- Select
Xcode -> File -> Swift Packages -> Add Package Dependency...
- Enter
https://github.com/wxxsw/VideoPlayer
. - Click
Next
, then select the version, complete.
- iOS 13+
- Xcode 11+
- Swift 5+
Banner Design by @aduqin
VideoPlayer is released under the MIT license. See LICENSE for details.