EVPlayer is a customized UIView with AVPlayer, which makes video playback extremely easy with its customizable usage options
EVPlayer
is a customized UIView with AVPlayer
, which makes video playback extremely easy with its various usage options
To run the example project, clone the repo, and run pod install
from the Example directory first.
Using CocoaPods
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapods
To integrate EVPlayer
into your Xcode project using CocoaPods, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '12.0'
use_frameworks!
target '<Your Target Name>' do
pod 'EVPlayer'
end
Then, run the following command:
$ pod install
Manual
Download the project, just drag and drop classes under Source file to your project.
Create EVPlayer object
let evPlayer = EVPlayer(frame: CGRect(x: 0, y: 0, width: 350, height: 200))
view.addSubview(evPlayer)
evPlayer.center = view.center
Create media with video URL and optional thumbnail URL
let media = EVMedia(videoURL: URL, thumbnailURL: URL?)
Create configuration with media
let config = EVConfiguration(media: media)
Configuration can be customize
config.shouldAutoPlay = true
config.shouldLoopVideo = true
config.videoGravity = .resizeAspect
config.isFullScreenModeSupported = false
config.fullScreenVideoGravity = .resize
config.forwardSeekDuration = .k15
config.rewindSeekDuration = .k45
config.isFullScreenShouldOpenWithLandscapeMode = true
config.progressBarMaximumTrackTintColor = .blue
config.progressBarMinimumTrackTintColor = .green
Start loading operation with configuration
evPlayer.load(with: config)
EVPlayerController Usage
var config = EVConfiguration(media: media)
config.shouldAutoPlay = true
config.fullScreenSupportedInterfaceOrientations = .allButUpsideDown
config.forwardSeekDuration = .k30
config.rewindSeekDuration = .k15
.
.
EVPlayerController.startFullScreenMode(withConfiguration: config)
EVPlayer comes with several customizable features. You can customize these features on EVConfiguration file;
π shouldAutoPlay: Bool
A Boolean value that determines whether the player should start playing automatically when the player is loaded.
β―οΈ Default is NO
π shouldLoopVideo: Bool
A Boolean value that determines whether the video should restart automatically from the beginning when it reaches the end.
β―οΈ Default is NO
π videoGravity: AVLayerVideoGravity
The gravity of the video layer that determines how the video is displayed within the layer bounds.
β―οΈ Default is AVLayerVideoGravity.resize
π fullScreenModeVideoGravity: AVLayerVideoGravity
The gravity of the full-screen mode video layer that determines how the video is displayed within the layer bounds.
β―οΈ Default is AVLayerVideoGravity.resizeAspect
π isSeekAnimationsEnabled: Bool
A Boolean value that determines whether seek animations should be enabled.
β―οΈ Default is YES
π forwardSeekDuration: EVSeekDuration
The time duration that the player should seek forward when the user taps the forward button.
β―οΈ Default is k10 (10 seconds)
π rewindSeekDuration: EVSeekDuration
The time duration that the player should seek rewind when the user taps the rewind button.
β―οΈ Default is k10 (10 seconds)
π isFullScreenModeSupported: Bool
A Boolean value that determines whether the full-screen mode supported.
β―οΈ Default is YES
π isFullScreenShouldOpenWithLandscapeMode: Bool
A Boolean value that determines whether the player should be presented in full-screen mode with landscape orientation.
β―οΈ Default is NO, meaning the player will be presented in full-screen mode with portrait orientation.
π isFullScreenShouldAutoRotate: Bool
A Boolean value that determines whether the player should rotate to match the device orientation when the device is rotated at full-screen mode.
β―οΈ Default is YES
π fullScreenSupportedInterfaceOrientations: UIInterfaceOrientationMask
The supported interface orientations for the player when it is presented in full-screen mode.
β―οΈ Default is UIInterfaceOrientationMask.allButUpsideDown
π fullScreenPresentationStyle: UIModalPresentationStyle
The presentation style to use when presenting the player in full-screen mode.
β―οΈ Default is UIModalPresentationStyle.fullScreen
π thumbnailContentMode: UIView.ContentMode
The content mode of thumbnail imageView.
β―οΈ Default is UIView.ContentMode.scaleToFill
π progressBarMinimumTrackTintColor: UIColor
The tint color of the minimum track of the progress bar, which represents the progress of the video playback.
β―οΈ Default is UIColor.orange
π progressBarMaximumTrackTintColor: UIColor
The tint color of the maximum track of the progress bar, which represents the remaining time of the video playback.
β―οΈ Default is UIColor.lightGray with an alpha component of 0.8.
π isTransactionAnimated: Bool
A Boolean value that determines whether the player transition to full-screen mode should be animated.
β―οΈ Default is YES
If you want to track current player state, current & total duration, and full screen lifecycle you can set delegate;
evPlayer.delegate = self
Methods;
func evPlayer(stateDidChangedTo state: EVVideoState)
func evPlayer(timeChangedTo currentTime: Double, totalTime: Double, loadedRange: Double)
func evPlayer(fullScreenTransactionUpdateTo state: EVFullScreenState)
Emirhan SaygΔ±ver
Just send me an email ([email protected])
EVPlayer is available under the MIT license. See the LICENSE file for more info.