Swift-YouTube-Player alternatives and similar libraries
Based on the "Video" category.
Alternatively, view Swift-YouTube-Player alternatives based on common mentions on social networks and blogs.
-
ZFPlayer
Support customization of any player SDK and control layer(支持定制任何播放器SDK和控制层) -
LFLiveKit
LaiFeng IOS Live Kit,H264 and AAC Hard coding,support GPUImage Beauty, rtmp transmission,weak network lost frame,Dynamic switching rate -
MobilePlayer
:iphone: :movie_camera: A powerful and completely customizable media player for iOS -
MHVideoPhotoGallery
A Photo and Video Gallery -
BMPlayer
A video player for iOS, based on AVPlayer, support the horizontal, vertical screen. support adjust volume, brightness and seek by slide, support subtitles. -
PryntTrimmerView
A set of tools to trim, crop and select frames inside a video -
VersaPlayer
Versatile Video Player implementation for iOS, macOS, and tvOS -
YoutubeKit
YoutubeKit is a video player that fully supports Youtube IFrame API and YoutubeDataAPI for easily create a Youtube app -
Periscope VideoViewController
Video view controller with Periscope fast rewind control -
VGPlayer
A simple iOS video player in Swift,Support play local and network,Background playback mode. -
VIMVideoPlayer
Deprecated: Please use [PlayerKit]( https://github.com/vimeo/PlayerKit) instead. -
ios-360-videos
NYT360Video plays 360-degree video streamed from an AVPlayer on iOS. -
AVPlayerViewController-Subtitles
Easy way to show SRT files on AVPlayerViewController -
SSVideoPlayer
A video player that support both local and network resource. -
MPMoviePlayerController-Subtitles
Easy way to show SRT files on MPMoviePlayerController -
AVAnimator
AVAnimator is an iOS library that makes it easy to implement non-trivial animated/video content in iOS -
PlayerView
Player View is a delegated view using AVPlayer of Swift -
swift-360-videos
360 video player for iOS written in swift - a subset of SceneKit that works -
ABMediaView
Media view which subclasses UIImageView, and can display & load images, videos, GIFs, and audio and from the web, and has functionality to minimize from fullscreen, as well as show GIF previews for videos. -
VideoPager
Paging Video UI, and some control components is available. -
JDVideoKit
You can easily transfer your video into Three common video type via this framework.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Swift-YouTube-Player or a related project?
README
YouTubePlayer
Embed and control YouTube videos in your iOS applications! Neato, right? Let's see how it works.
0.7.0 Update: WKWebView
breaking changes
Installation
Carthage
Add this to your Cartfile:
github "gilesvangruisen/Swift-YouTube-Player"
…and then run carthage update
Don't forget to:
- add
YouTubePlayer.framework
to theLink binary with libraries
build phase - add
YouTubePlayer.framework
as an input file to thecarthage copy-frameworks
run script phase (only necesasry if you're building for iOS)
See Carthage for more information about using Carthage as a dependency manager.
Cocoapods
Ensure you are opting into using frameworks with use_frameworks!
. Then add the following to your Podfile:
pod 'YouTubePlayer'
…and then run pod install
.
Example
// Import Swift module
import YouTubePlayer
Build and lay out the view however you wish, whether in IB w/ an outlet or programmatically.
@IBOutlet var videoPlayer: YouTubePlayerView!
// init YouTubePlayerView w/ playerFrame rect (assume playerFrame declared)
var videoPlayer = YouTubePlayerView(frame: playerFrame)
Give the player a video to load, whether from ID or URL.
// Load video from YouTube ID
videoPlayer.loadVideoID("nfWlot6h_JM")
// Load video from YouTube URL
let myVideoURL = NSURL(string: "https://www.youtube.com/watch?v=wQg3bXrVLtg")
videoPlayer.loadVideoURL(myVideoURL!)
Controlling YouTubePlayerView
Each YouTubePlayerView
has methods for controlling the player (play, pause, seek, change video, etc.) They are:
func loadVideoURL(videoURL: NSURL)
func loadVideoID(videoID: String)
func loadPlaylistID(playlistID: String)
func play()
func pause()
func stop()
func clear()
func seekTo(seconds: Float, seekAhead: Bool)
func previousVideo()
func nextVideo()
func getCurrentTime(completion: ((Double?) -> Void)?)
func getDuration(completion: ((Double?) -> Void)?))
Please note that calls to all but the first two methods will result in a JavaScript runtime error if they are called before the player is ready. The player will not be ready until shortly after a call to either loadVideoURL(videoURL: NSURL)
or loadVideoID(videoID: String)
. You can check the readiness of the player at any time by checking its ready: Bool
property. These functions run asynchronously, so it is not guaranteed that a call to a play function will be safe if it immediately follows a call to a load function. I plan to update the library soon to add completion handlers to be called when the player is ready.
In the meantime, you can also the YouTubePlayerDelegate
method playerReady(videoPlayer: YouTubePlayerView)
to ensure code is executed immediately when the player becomes ready.
Responding to events
YouTube's iFrame player emits certain events based on the lifecycle of the player. The YouTubePlayerDelegate
outlines these methods that get called during a player's lifecycle. They are:
func playerReady(videoPlayer: YouTubePlayerView)
func playerStateChanged(videoPlayer: YouTubePlayerView, playerState: YouTubePlayerState)
func playerQualityChanged(videoPlayer: YouTubePlayerView, playbackQuality: YouTubePlaybackQuality)
Side note: All these delegate methods are optional which means that you can implement none, all, or some of them in your delegate class.
Breaking Changes
0.7.0
Transitioning from UIWebView
(deprecated) to WKWebView
required changing
player calls which return values to be asynchronous. If you upgrade to 0.7.0,
you will need to replace any call to either getCurrentTime()
and
getDuration()
with its asynchronous equivalent, documented
above.