YoutubeKitSoun 0.7.1

YoutubeKitSoun 0.7.1

david 维护。



YoutubeKit

YoutubeKit 是一个完全支持 Youtube IFrame APIYoutubeDataAPI 的视频播放器,可以轻松创建 YouTube 应用程序。

Swift Cocoapods Carthage License

重要参考文献

YoutubeKit 是基于以下参考文献创建的。如果您不确定这是一个正常行为还是错误,请先检查以下文档。

示例

这是一个使用 YoutubeKit 的应用程序。一个简单的视频播放示例包含在 Example 中。您可以通过使用 YoutubeKit 非常容易地创建这些功能。

示例1 示例2
Feed Comment
示例3 示例4
Floating Rotate

什么是 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许可。