Fully customizable SwiftUI Video Player for iOS and tvOS
Desarrollador
Hablar con el vendedor
Detalles del producto
MPlayer - Customizable Video Player for SwiftUI
MPlayer is a cutting-edge video player designed exclusively for SwiftUI, offering unparalleled customization options for developers. Unlike traditional Apple video players like VideoPlayer and AVPlayerViewController, MPlayer empowers developers with complete control over the user interface and player functionality, enabling the creation of unique and branded video playback experiences.
Key Features:
- Full Customization: Tailor every aspect of the video player UI to match your application's design and user experience requirements.
- SwiftUI Integration: Seamlessly integrates into SwiftUI projects, leveraging the declarative syntax and powerful capabilities of SwiftUI.
- Advanced Features: Supports custom control buttons, progress bars, thumbnail seeking, and interactive elements for a rich viewing experience.
- Extensibility: Designed to be extensible, allowing developers to add new functionalities and customize existing ones to meet specific application needs.
MPlayer is the ultimate solution for developers seeking to transcend the limitations of standard video players and deliver a truly unique and engaging video playback experience within their SwiftUI applications.
Features:
- MPlayer is specifically designed for SwiftUI and is easy to use.
- Enjoy full customization options to create a tailored video player.
- Supports thumbnail seeking for quick navigation.
- Compatible with AirPlay for seamless streaming.
- Picture-in-Picture (PiP) support for multitasking.
- Integrates with Media Player Now Playing Info Update for enhanced control.
- MPlayer is fully customizable
- MPlayer supports thumbnail seeking
- MPlayer supports AirPlay
- MPlayer supports PiP
- MPlayer supports Media Player Now Playing Info Update
File Tree
-
📁 Fully customizable SwiftUI Video Player for iOS and tvOS
Instrucciones de instalación
2. In XCode, File -> Add Package Dependences
3. In the XCode Add Package Dependencies dialog, Click on `Add Local...` and select your package folder and click on `Add Package`.
4. In your code, define your `Playable` item, here is an example
struct VOD: Playable {
let url: URL
let thumbnailVideoUrl: URL?
let posterUrl: URL
let title: String
let description: String
let isVideo: Bool = true
let isLiveStream: Bool = false
var artwork: MPMediaItemArtwork?
}
extension VOD {
static var sintel: VOD {
VOD(url: URL(string: "https://media-io.s3.us-west-1.amazonaws.com/sintel/playlist.m3u8")!,
thumbnailVideoUrl: URL(string: "https://media-io.s3.us-west-1.amazonaws.com/sintel-thumbnail/sintel-thumbnail.mp4")!,
posterUrl: URL(string: "https://media-io.s3.us-west-1.amazonaws.com/Poster.jpg")!,
title: "Sintel",
description: "Sintel is an open movie from the Blender Foundation licensed under the Creative Commons Attribution 3.0 license.")
}
}
5. Then you can use the `PlayerView` anywhere in your code
PlayerView(asset: VOD.sintel,
configuration: PlayerConfiguration(controlsDismissTimeout: 10, stepInterval: 15, scrubber: .default, seekbarStyle: .default, style: .init()))
6. To customize the Player, use `PlayerConfiguration`, `PLayerStyle, `SeekBarStyle`, `ScrubberStyle` and `VolumeBarStyle`.
Instrucciones de cambio y adaptación
ffmpeg -I 2048-stereo.mp4 -vf "scale=-1:110" -c:v libx264 -crf 28 -preset veryfast -an -movflags faststart sintel-thumbnail.mp
To customize the Player, use `PlayerConfiguration`.
struct PlayerConfiguration {
let controlsDismissTimeout: TimeInterval // in seconds
let stepInterval: Int // every step is 5 seconds, if specify 2, player will forward / backward 10 seconds every step
let scrubber: ScrubberConfiguration
let seekbarStyle: SeekBarStyle
let style: PLayerStyle
}
struct PLayerStyle {
let playImage: Image
let pauseImage: Image
let goforwardImage: Image
let gobackwardImage: Image
let optionsImage: Image
let optionCheckmarkImage: Image
let accentColor: Color
let borderColor: Color
let backgrounColor: Color
let playPauseButtonSize: CGSize
let forwardBackwordButtonSize: CGSize
let airplayButtonSize: CGSize
let pipButtonSize: CGSize
let optionsButtonSize: CGSize
let optionsMenuMinSize: CGSize
let optionsMenuCornerRadius: CGFloat
let optionsMenuBackgroundColor: Color
let optionsMenuTextColor: Color
}
public struct SeekBarStyle {
let scrubberStyle: ScrubberStyle
let thumbnailHeight: CGFloat
let timeFont: Font
}
struct ScrubberStyle {
let height: CGFloat
let padding: CGFloat
let cornerRadius: CGFloat
let backgroundColor: Color
let highlightColor: Color
let outlineWidth: CGFloat
let outlineColor: Color
}
public struct VolumeBarStyle {
let scrubberStyle: ScrubberStyle
let mutedImage: Image
let volume1Image: Image
let volume2Image: Image
let volume3Image: Image
let buttonSize: CGSize
}