XCDYouTubeKit is a YouTube video player for iOS and OS X.
Are you enjoying XCDYouTubeKit? You can say thank you with a tweet. I am also accepting donations. ;-)
- Runs on iOS 5.0 and later
- Runs on OS X 10.7 and later
XCDYouTubeKit is against the YouTube Terms of Service. The only official way of playing a YouTube video inside an app is with a web view and the iframe player API. Unfortunately, this is very slow and quite ugly, so I wrote this player to give users a better viewing experience.
XCDYouTubeKit is available through CocoaPods and Carthage.
CocoaPods:
pod "XCDYouTubeKit", "~> 2.1.1"
Carthage:
github "0xced/XCDYouTubeKit" ~> 2.1.1
Alternatively, you can manually use the provided static library on iOS or dynamic framework on OS X. In order to use the iOS static library, you must:
- Create a workspace (File → New → Workspace…)
- Add your project to the workspace
- Add the XCDYouTubeKit project to the workspace
- Drag and drop the
libXCDYouTubeKit.a
file referenced from XCDYouTubeKit → Products → libXCDYouTubeKit.a into the Link Binary With Libraries build phase of your app’s target.
These steps will ensure that #import <XCDYouTubeKit/XCDYouTubeKit.h>
will work properly in your project.
Warning: If you use the iOS static library and you are targeting iOS 7, add the JavaScriptCore framework. If you are targeting iOS 5 or 6, you must add the following Other Linker Flags instead to your app:
-Wl,-U,_JSContextGetGlobalObject -Wl,-U,_JSEvaluateScript -Wl,-U,_JSGlobalContextCreate -Wl,-U,_JSGlobalContextRelease -Wl,-U,_JSObjectCallAsFunction -Wl,-U,_JSObjectGetPrototype -Wl,-U,_JSObjectIsFunction -Wl,-U,_JSObjectSetProperty -Wl,-U,_JSStringCopyCFString -Wl,-U,_JSStringCreateWithCFString -Wl,-U,_JSStringRelease -Wl,-U,_JSValueIsObject -Wl,-U,_JSValueIsString -Wl,-U,_JSValueMakeString -Wl,-U,_JSValueToStringCopy
See my JavaScriptCore framework availability on iOS answer on Stack Overflow for a complete explanation.
XCDYouTubeKit is fully documented.
NSString *videoIdentifier = @"EdeVaT-zZt4"; // 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
}
}];
On iOS, you can use the class XCDYouTubeVideoPlayerViewController
the same way you use a MPMoviePlayerViewController
, except you initialize it with a YouTube video identifier instead of a content URL.
XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"];
[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController];
XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"];
[videoPlayerViewController presentInView:self.videoContainerView];
[videoPlayerViewController.moviePlayer play];
See the demo project for more sample code.
The URL extraction algorithms in XCDYouTubeKit are inspired by the YouTube extractor module of the youtube-dl project.
Cédric Luthi
XCDYouTubeKit is available under the MIT license. See the LICENSE file for more information.