XCDYouTubeKit 2.15.2

XCDYouTubeKit 2.15.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2020年12月

Cédric LuthiSoneé John 维护。




关于

Build Status Coverage Status Platform Pod Version Carthage Compatibility Swift Package Manager Compatibility License

XCDYouTubeKit 是一个适用于 iOS、tvOS 和 macOS 的 YouTube 视频播放器。

您喜欢 XCDYouTubeKit 吗?您可以通过 推文 表示感谢。我还在接受捐款。:-)

Donate button

要求

  • 在 iOS 8.0 及更高版本上运行
  • 在 macOS 10.9 及更高版本上运行
  • 在 tvOS 9.0 及更高版本上运行

警告

XCDYouTubeKit 违反 YouTube 的 服务条款。在应用内部播放 YouTube 视频的唯一 官方 方法是使用带有 iframe 播放器 API 的 web view。遗憾的是,这非常缓慢且相当难看,因此我编写了这个播放器,以使用户获得更好的观看体验。

安装

XCDYouTubeKit可以通过CocoaPodsCarthageSwift包管理器获得。

CocoaPods

pod "XCDYouTubeKit", "~> 2.15"

Carthage

github "0xced/XCDYouTubeKit" ~> 2.15

Swift包管理器

XCDYouTubeKit添加到Package.swift的依赖项值中。

dependencies: [
	.package(url: "https://github.com/0xced/XCDYouTubeKit.git", from: "2.15.0")
]

或者,您可以使用提供的静态库或动态框架手动安装。为了使用静态库,您必须:

  1. 创建一个工作区(文件 → 新建 → 工作区…)
  2. 将您的项目添加到工作区
  3. 将XCDYouTubeKit项目添加到工作区
  4. 将引用自XCDYouTubeKit的libXCDYouTubeKit.a文件拖放到您的应用目标的链接二进制与库构建阶段中。

执行这些步骤将确保#import <XCDYouTubeKit/XCDYouTubeKit.h>在您的项目中可以正常工作。

使用方式

XCDYouTubeKit具有完整文档。

iOS 8.0+ & tvOS(AVPlayerViewController)

AVPlayerViewController *playerViewController = [AVPlayerViewController new];
[self presentViewController:playerViewController animated:YES completion:nil];

__weak AVPlayerViewController *weakPlayerViewController = playerViewController;
[[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoIdentifier completionHandler:^(XCDYouTubeVideo * _Nullable video, NSError * _Nullable error) {
    if (video)
    {
        NSDictionary *streamURLs = video.streamURLs;
        NSURL *streamURL = streamURLs[XCDYouTubeVideoQualityHTTPLiveStreaming] ?: streamURLs[@(XCDYouTubeVideoQualityHD720)] ?: streamURLs[@(XCDYouTubeVideoQualityMedium360)] ?: streamURLs[@(XCDYouTubeVideoQualitySmall240)];
        weakPlayerViewController.player = [AVPlayer playerWithURL:streamURL];
        [weakPlayerViewController.player play];
    }
    else
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}];

iOS、tvOS和macOS

NSString *videoIdentifier = @"9bZkp7q19f0"; // A 11 characters YouTube video identifier
[[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoIdentifier completionHandler:^(XCDYouTubeVideo *video, NSError *error) {
	if (video)
	{
		// Do something with the `video` object
	}
	else
	{
		// Handle error
	}
}];

iOS 8.0

在iOS上,您可以使用类XCDYouTubeVideoPlayerViewController,就像使用MPMoviePlayerViewController一样,只不过是以YouTube视频标识符初始化,而不是内容URL。

全屏播放视频

- (void) playVideo
{
	XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"];
	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:videoPlayerViewController.moviePlayer];
	[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController];
}

- (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification
{
	[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:notification.object];
	MPMovieFinishReason finishReason = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
	if (finishReason == MPMovieFinishReasonPlaybackError)
	{
		NSError *error = notification.userInfo[XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey];
		// Handle error
	}
}

非全屏播放视频

XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"];
[videoPlayerViewController presentInView:self.videoContainerView];
[videoPlayerViewController.moviePlayer play];

查看示例项目以获取更多代码。

日志记录

自 2.2.0 版本起,XCDYouTubeKit 生成日志。XCDYouTubeKit 支持 CocoaLumberjack,但不要求使用。

有关更多信息,请参阅 XCDYouTubeLogger文档

致谢

XCDYouTubeKit 中的 URL 提取算法灵感来源于 youtube-dl 项目的 YouTube 提取器 模块。

联系我们

Cédric Luthi

许可证

XCDYouTubeKit 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。