YoutubeKit
YoutubeKit
是一个完全支持 Youtube IFrame API
和 YoutubeDataAPI
的视频播放器,可以轻松创建 YouTube 应用程序。
重要参考文献
YoutubeKit
是基于以下参考文献创建的。如果您不确定这是一个正常行为还是错误,请先检查以下文档。
示例
这是一个使用 YoutubeKit
的应用程序。一个简单的视频播放示例包含在 Example
中。您可以通过使用 YoutubeKit
非常容易地创建这些功能。
示例1 | 示例2 |
---|---|
![]() |
![]() |
示例3 | 示例4 |
![]() |
![]() |
什么是 YoutubeKit?
YoutubeKit
为创建 YouTube 应用程序提供了有用的功能。它由以下两个函数组成。
-
YTSwiftyPlayer (WKWebView + HTML5 + IFrame API)
-
YoutubeDataAPI
YTSwiftyPlayer
YTSwiftyPlayer
是一个支持 YouTube IFrame API 的视频播放器。
功能
- 高性能(性能比传统基于 UIWebView 的播放器提升 30%)
- 低内存影响(最高减少 70%)
- 类型安全的参数接口(所有 IFrame API 的参数都支持作为
VideoEmbedParameter
)
YoutubeDataAPI
此库支持 YoutubeDataAPI (v3)
。详细信息在这里。
可用的 API 列表
- Actitivty(列表)
- Actitivty(插入)
- 字幕(列表)
- 频道(列表)
- 频道分类(列表)
- 评论(列表)
- 评论线程(列表)
- 指南分类(列表)
- 播放列表项(列表)
- 播放列表(列表)
- 搜索(列表)
- 订阅(列表)
- 视频滥用报告原因(列表)
- 视频类别(列表)
- 视频(列表)
开始使用
播放 YouTube 视频。
import YoutubeKit
final class VideoPlayerController: UIViewController {
private var player: YTSwiftyPlayer!
override func viewDidLoad() {
super.viewDidLoad()
// Create a new player
player = YTSwiftyPlayer(
frame: CGRect(x: 0, y: 0, width: 640, height: 480),
playerVars: [.videoID("videoID-abcde")])
// Enable auto playback when video is loaded
player.autoplay = true
// Set player view.
view = player
// Set delegate for detect callback information from the player.
player.delegate = self
// Load the video.
player.loadPlayer()
}
}
YTSwiftyPlayerDelegate
YTSwiftyPlayerDelegate
支持以下代理方法。
func playerReady(_ player: YTSwiftyPlayer)
func player(_ player: YTSwiftyPlayer, didUpdateCurrentTime currentTime: Double)
func player(_ player: YTSwiftyPlayer, didChangeState state: YTSwiftyPlayerState)
func player(_ player: YTSwiftyPlayer, didChangePlaybackRate playbackRate: Double)
func player(_ player: YTSwiftyPlayer, didReceiveError error: YTSwiftyPlayerError)
func player(_ player: YTSwiftyPlayer, didChangeQuality quality: YTSwiftyVideoQuality)
func apiDidChange(_ player: YTSwiftyPlayer)
func youtubeIframeAPIReady(_ player: YTSwiftyPlayer)
func youtubeIframeAPIFailedToLoad(_ player: YTSwiftyPlayer)
播放期间调用 IFrame API。
// Pause the video.
player.pauseVideo()
// Seek after 15 seconds.
player.seek(to: 15, allowSeekAhead: true)
// Set a mute.
player.mute()
// Load another video.
player.loadVideo(videoID: "abcde")
使用 YoutubeDataAPI 获取视频信息
首先,从此处获取 API 密钥。
接下来,在您的 AppDelegate 中添加此代码。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Set your API key here
YoutubeKit.shared.setAPIKey("Your API key")
return true
}
然后,您可以像这样使用 YoutubeDataAPI
请求。
// Get youtube chart ranking
let request = VideoListRequest(part: [.id, .statistics], filter: .chart)
// Send a request.
ApiSession.shared.send(request) { result in
switch result {
case .success(let response):
print(response)
case .failed(let error):
print(error)
}
}
此处为响应示例。
VideoList(items: [YoutubeKit.Video(etag: "\"A8kisgyDEbllhHF9ooXPFFrkc/nR6_A9oyIoLTJuucY_UXeasjYNU\"",
kind: "youtube#video",
id: "jeiDjeJgF0",
contentDetails: nil,
statistics: Optional(YoutubeKit.Statistics.VideoList(dislikeCount: "1631", likeCount: "60307", commentCount: Optional("8675"), favoriteCount: "0", viewCount: "1259046")),
snippet: nil,
status: nil),
etag: "\"J67fSnfblalhHF0foXPiFFrkc/TZGPJdE22-LilSv4-3VNoPw1cS4\"",
kind: "youtube#videoListResponse",
pageInfo: YoutubeKit.PageInfo(resultsPerPage: 5, totalResults: 200))
获取下一页(分页)
var nextPageToken: String?
...
// Send some request
ApiSession.shared.send(request) { [weak self] result in
switch result {
case .success(let response):
// Save nextPageToken
self?.nextPage = response.nextPageToken
case .failed(let error):
print(error)
}
}
...
// Set nextPageToken
let request = VideoListRequest(part: [.id], filter: .chart, nextPageToken: nextPageToken)
授权请求
如果您需要像获取您的 YouTube 活动之类的授权请求,请在发送请求之前设置您的访问令牌。要使用 GoogleSignIn
,您可以轻松获取访问令牌。 pod 'GoogleSignIn'
首先,在您的 AppDelegate 中添加此代码。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Set your access token for autheticate request
YoutubeKit.shared.setAccessToken("Your access token")
return true
}
然后,您可以请求需要授权的请求,以下为获取您 YouTube 活动的示例。
// Get your Youtube activity
let request = ActivityListRequest(part: [.snippet], filter: .mine(true))
// Send a request.
ApiSession.shared.send(request) { result in
switch result {
case .success(let video):
print(video)
case .failed(let error):
print(error)
}
}
要求
XCode 10.2+
Swift 4+
安装
Cocoapods
$ pod repo update
并将以下内容添加到您的 Podfile 中
pod 'YoutubeKit'
和
$ pod install
Cardine
将以下内容添加到您的Cartfile
github "rinov/YoutubeKit"
和
$ carthage update
作者
Github: https://github.com/rinov
Twitter: https://twitter.com/rinov0321
Email: rinov[at]rinov.jp
许可
YoutubeKit采用MIT许可。