Giter Site home page Giter Site logo

youtube / youtube-ios-player-helper Goto Github PK

View Code? Open in Web Editor NEW
1.6K 100.0 674.0 189 KB

Lightweight helper library that allows iOS developers to add inline playback of YouTube videos through a WebView

License: Other

Objective-C 88.89% Ruby 7.86% HTML 2.74% Swift 0.51%

youtube-ios-player-helper's Introduction

YouTube-Player-iOS-Helper

Version Platform

Overview

To run the example project; clone the repo, and run pod install from the Project directory first. For a simple tutorial see this Google Developers article - Using the YouTube Helper Library to embed YouTube videos in your iOS application.

Installation

CocoaPods

YouTube-Player-iOS-Helper is available through CocoaPods. To install the library, add the following line to your Podfile and replace "x.y.z" with the latest version.

pod "youtube-ios-player-helper", "~> x.y.z"

Swift Package Manager

Add the following line to the dependencies in your Package.swift:

.package("https://github.com/youtube/youtube-ios-player-helper.git", from: "x.y.z")

Add YouTubeiOSPlayerHelper to your target's dependencies.

.target(name: "TargetName",
        dependencies: [
          "YouTubeiOSPlayerHelper"
        ]
      )

Usage

After installing in your project, to use the library:

  1. Drag a UIView the desired size of your player onto your Storyboard.
  2. Change the UIView's class in the Identity Inspector tab to YTPlayerView
  3. Import "YTPlayerView.h" in your ViewController.
  4. Add the following property to your ViewController's header file:
    @property(nonatomic, strong) IBOutlet YTPlayerView *playerView;
  1. Load the video into the player in your controller's code with the following code:
    [self.playerView loadWithVideoId:@"M7lc1UVf-VE"];
  1. Run your code!

See the sample project for more advanced uses, including passing additional player parameters and working with callbacks via YTPlayerViewDelegate.

Original Authors

  • Ikai Lan
  • Ibrahim Ulukaya
  • Yoshifumi Yamaguchi

License

YouTube-Player-iOS-Helper is available under the Apache 2.0 license. See the LICENSE file for more info.

youtube-ios-player-helper's People

Contributors

anislav avatar asgeo1 avatar baza207 avatar benjaminjackson avatar bleege avatar denkeni avatar desislava-staykova avatar dictav avatar extreme-bg avatar felipecarreramo avatar ikai avatar jalsnipe avatar jlampa avatar krider2010 avatar m-keil avatar martin-marinov avatar nemoeslovo avatar nvh avatar olala7846 avatar powerje avatar raman148 avatar samiq avatar studgeek avatar todd-patterson avatar ulukaya avatar ymotongpoo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

youtube-ios-player-helper's Issues

Quality Always kYTPlaybackQualityUnknown for YouTube Live Events

I've noticed that the playback quality for YouTube Live events is always kYTPlaybackQualityUnknown or 6. The data returned by url.query has the string value of "auto." I've noticed this isn't one of the playback quality constants:

// Constants representing playback quality.
NSString static *const kYTPlaybackQualitySmallQuality = @"small";
NSString static *const kYTPlaybackQualityMediumQuality = @"medium";
NSString static *const kYTPlaybackQualityLargeQuality = @"large";
NSString static *const kYTPlaybackQualityHD720Quality = @"hd720";
NSString static *const kYTPlaybackQualityHD1080Quality = @"hd1080";
NSString static *const kYTPlaybackQualityHighResQuality = @"highres";
NSString static *const kYTPlaybackQualityUnknownQuality = @"unknown";

Are there more constants that YouTube has added that are not reflected in this class?

Youtube iOS Player Helper not returning kYTPlayerStateUnstarted

I'm using Youtube iOS Player Helper for an iPhone music app and sometimes the control doesn't return the event kYTPlayerStateUnstarted, causing the loader to timeout. Normally it returns kYTPlayerErrorUnknown when there's a problem. I need to be able to determine more quickly whether the associated YouTube video will play or not so I can remove it from the app.

Make YTPlayerView fullscreen programatically

Hi,

I am trying to make the player view full screen programmatically, but I am unable to do so.

Is there an exposed method in the api or a callback that can be used to accomplish this?

Thanks

Doesn't work on iOS 8

Hi,
FYI: Works great on iOS 7 and below. On iOS 8 beta 2, the spinning YouTube wheel is showing, but the video doesn't start to play...
Regards

My own UIViewController is not updating after playerViewDidBecomeReady fired

I used this repository and it is working really fine. So this may not be categorized under issue but just a question.

I used player callback handling too. After playerViewDidBecomeReady fired all the other functions which are in my UIViewController is not working. Simply say, I am supposed to update a NSTextField in the middle of the video is running. But after playerViewDidBecomeReady is called not even a NSLog message is printed related to my view controller. But all the player callback methods are working properly and can see log statements too in the Xcode debug area.

What is the reason for that and how can I solve that?

Adding a UIActivityIndicatorView?

Obviously, the video doesn't snap in right off the bat. Should there be a UIActivityIndicator that takes the blank space until the webView pops in? Where would that go?

iOS 8 rotation problems

Prior to iOS8, users can change view mode by switching device orientation.
In iOS8, the view mode is not changed by switching device orientation.

It does not stop.

The new version is terrible. I put it on my project to solve annoying "pubads.g.doubleclick.net" bug. However, when click play -> play for a moment -> click done -> (It bounds back) then I cannot navigate back to the main screen. Therefore, I have to use it method to solve the above problem

http://stackoverflow.com/questions/27820123/bug-in-youtube-ios-player-helper-library/27840798#27840798

My app: https://itunes.apple.com/us/app/7-minute-workout-plus/id954165191?mt=8
Please fix it issue.

currentTime returns 0 if the video was tapped to bring it to full screen and then closed with the Done button.

If a user taps the video itself to play it (thus opening it in to full screen), then taps the Done button to close the full screen takeover, player.getCurrentTime() will return 0 until the player is tapped again and brought back in to full screen.

Using the Single Video view in the example files here, you can reproduce this by not using the custom controls, adding some logging of currentTime, then playing the video by tapping it and letting it go fullscreen. When the full screen is closed you'll start logging zeros. If you then, for example, use the custom +30 skip button, it will seek to exactly 30 seconds no matter where you were in the video.

Not tapping the video directly and instead using only the custom controls will return the correct currentTime, however the app I'm working on relies on going full screen, not using custom controls, and still being able to get the currentTime, even after the video is paused/stopped by closing the full screen takeover.

AutoPlay Not working properly

I set "autoplay" parameter key to value '1' but it doesn't effect. How can i achieve AutoPlay Youtube Video. please help me . thanks

iOS YTPlayerView Throws AutoLayout Constraint Exceptions on iOS 8 in Full Screen Mode

YTPlayerView has not been updated to support iOS 8, specifically for iPhone 6/6 Plus devices. As a result, it has a number of issues related to auto layout constraints that cause it to intermittently crash, restart videos with time ranges, or fail when attempting to dismiss it when it's displayed in a full screen view controller. Aside from these issues, and as previously reported, it never calls the delegate receivedError method for missing or private videos. Is there any plan to update this iOS component in the near-term?

Here are the constraint issues being thrown when it transitions to full screen mode:

2014-10-29 10:22:23.753 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x174280140 UIImageView:0x1701f7100.centerX == AVUnsupportedContentIndicatorView:0x174188880.centerX>",
"<NSLayoutConstraint:0x1742801e0 H:|-(>=10)-[UIImageView:0x1701f7100](Names: '|':AVUnsupportedContentIndicatorView:0x174188880)>",
"<NSLayoutConstraint:0x174280a00 H:|-(0)-[AVUnsupportedContentIndicatorView:0x174188880] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280a50 H:[AVUnsupportedContentIndicatorView:0x174188880]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x174280140 UIImageView:0x1701f7100.centerX == AVUnsupportedContentIndicatorView:0x174188880.centerX>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.755 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170283250 UIView:0x1701897f0.centerX == AVExternalPlaybackIndicatorView:0x1701aeb60.centerX>",
"<NSLayoutConstraint:0x1702832f0 H:|-(>=10)-[UIView:0x1701897f0](Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60)>",
"<NSLayoutConstraint:0x174280cd0 H:|-(0)-[AVExternalPlaybackIndicatorView:0x1701aeb60] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280d20 H:[AVExternalPlaybackIndicatorView:0x1701aeb60]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170283250 UIView:0x1701897f0.centerX == AVExternalPlaybackIndicatorView:0x1701aeb60.centerX>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.756 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1702832f0 H:|-(>=10)-[UIView:0x1701897f0](Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60)>",
"<NSLayoutConstraint:0x170283340 H:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>",
"<NSLayoutConstraint:0x174280cd0 H:|-(0)-[AVExternalPlaybackIndicatorView:0x1701aeb60] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280d20 H:[AVExternalPlaybackIndicatorView:0x1701aeb60]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170283340 H:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.758 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1742801e0 H:|-(>=10)-[UIImageView:0x1701f7100](Names: '|':AVUnsupportedContentIndicatorView:0x174188880)>",
"<NSLayoutConstraint:0x1702829e0 H:[UIImageView:0x1701f7100]-(>=10)-| (Names: '|':AVUnsupportedContentIndicatorView:0x174188880 )>",
"<NSLayoutConstraint:0x174280a00 H:|-(0)-[AVUnsupportedContentIndicatorView:0x174188880] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280a50 H:[AVUnsupportedContentIndicatorView:0x174188880]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1702829e0 H:[UIImageView:0x1701f7100]-(>=10)-| (Names: '|':AVUnsupportedContentIndicatorView:0x174188880 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.760 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170282ad0 UIImageView:0x1741f2c00.centerX == AVAudioOnlyIndicatorView:0x174189990.centerX>",
"<NSLayoutConstraint:0x170282c10 H:|-(>=10)-[UIImageView:0x1741f2c00](Names: '|':AVAudioOnlyIndicatorView:0x174189990)>",
"<NSLayoutConstraint:0x174280b40 H:|-(0)-[AVAudioOnlyIndicatorView:0x174189990] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280b90 H:[AVAudioOnlyIndicatorView:0x174189990]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170282ad0 UIImageView:0x1741f2c00.centerX == AVAudioOnlyIndicatorView:0x174189990.centerX>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.762 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170282c10 H:|-(>=10)-[UIImageView:0x1741f2c00](Names: '|':AVAudioOnlyIndicatorView:0x174189990)>",
"<NSLayoutConstraint:0x170282c60 H:[UIImageView:0x1741f2c00]-(>=10)-| (Names: '|':AVAudioOnlyIndicatorView:0x174189990 )>",
"<NSLayoutConstraint:0x174280b40 H:|-(0)-[AVAudioOnlyIndicatorView:0x174189990] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280b90 H:[AVAudioOnlyIndicatorView:0x174189990]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x1742808c0 H:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x174280910 H:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x170285370 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170282c60 H:[UIImageView:0x1741f2c00]-(>=10)-| (Names: '|':AVAudioOnlyIndicatorView:0x174189990 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.764 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1702832a0 UIView:0x1701897f0.centerY == AVExternalPlaybackIndicatorView:0x1701aeb60.centerY + 10>",
"<NSLayoutConstraint:0x1702833e0 V:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>",
"<NSLayoutConstraint:0x170283660 V:|-(0)-[UIImageView:0x1701f7300] (Names: '|':UIView:0x1701897f0 )>",
"<NSLayoutConstraint:0x1702836b0 V:[UIImageView:0x1701f7300]-(20)-[UILabel:0x1010a6660]>",
"<NSLayoutConstraint:0x170283700 V:[UILabel:0x1010a6660]-(0)-[UILabel:0x1010a68d0]>",
"<NSLayoutConstraint:0x170283750 V:[UILabel:0x1010a68d0]-(0)-| (Names: '|':UIView:0x1701897f0 )>",
"<NSLayoutConstraint:0x174280d70 V:|-(0)-[AVExternalPlaybackIndicatorView:0x1701aeb60] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280dc0 V:[AVExternalPlaybackIndicatorView:0x1701aeb60]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1702836b0 V:[UIImageView:0x1701f7300]-(20)-[UILabel:0x1010a6660]>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.767 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1702832a0 UIView:0x1701897f0.centerY == AVExternalPlaybackIndicatorView:0x1701aeb60.centerY + 10>",
"<NSLayoutConstraint:0x1702833e0 V:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>",
"<NSLayoutConstraint:0x174280d70 V:|-(0)-[AVExternalPlaybackIndicatorView:0x1701aeb60] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280dc0 V:[AVExternalPlaybackIndicatorView:0x1701aeb60]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1702832a0 UIView:0x1701897f0.centerY == AVExternalPlaybackIndicatorView:0x1701aeb60.centerY + 10>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.769 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x174280190 UIImageView:0x1701f7100.centerY == AVUnsupportedContentIndicatorView:0x174188880.centerY + 10>",
"<NSLayoutConstraint:0x170282a80 V:[UIImageView:0x1701f7100]-(>=10)-| (Names: '|':AVUnsupportedContentIndicatorView:0x174188880 )>",
"<NSLayoutConstraint:0x174280aa0 V:|-(0)-[AVUnsupportedContentIndicatorView:0x174188880] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280af0 V:[AVUnsupportedContentIndicatorView:0x174188880]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x174280190 UIImageView:0x1701f7100.centerY == AVUnsupportedContentIndicatorView:0x174188880.centerY + 10>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.771 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170282b70 UIImageView:0x1741f2c00.centerY == AVAudioOnlyIndicatorView:0x174189990.centerY + 10>",
"<NSLayoutConstraint:0x170282d00 V:[UIImageView:0x1741f2c00]-(>=10)-| (Names: '|':AVAudioOnlyIndicatorView:0x174189990 )>",
"<NSLayoutConstraint:0x174280be0 V:|-(0)-[AVAudioOnlyIndicatorView:0x174189990] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280c30 V:[AVAudioOnlyIndicatorView:0x174189990]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170282b70 UIImageView:0x1741f2c00.centerY == AVAudioOnlyIndicatorView:0x174189990.centerY + 10>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.774 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170283390 V:|-(>=10)-[UIView:0x1701897f0](Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60)>",
"<NSLayoutConstraint:0x1702833e0 V:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>",
"<NSLayoutConstraint:0x174280d70 V:|-(0)-[AVExternalPlaybackIndicatorView:0x1701aeb60] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280dc0 V:[AVExternalPlaybackIndicatorView:0x1701aeb60]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1702833e0 V:[UIView:0x1701897f0]-(>=10)-| (Names: '|':AVExternalPlaybackIndicatorView:0x1701aeb60 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.776 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170282a30 V:|-(>=10)-[UIImageView:0x1701f7100](Names: '|':AVUnsupportedContentIndicatorView:0x174188880)>",
"<NSLayoutConstraint:0x170282a80 V:[UIImageView:0x1701f7100]-(>=10)-| (Names: '|':AVUnsupportedContentIndicatorView:0x174188880 )>",
"<NSLayoutConstraint:0x174280aa0 V:|-(0)-[AVUnsupportedContentIndicatorView:0x174188880] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280af0 V:[AVUnsupportedContentIndicatorView:0x174188880]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170282a80 V:[UIImageView:0x1701f7100]-(>=10)-| (Names: '|':AVUnsupportedContentIndicatorView:0x174188880 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-10-29 10:22:23.777 MomentumD[4562:1499764] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170282cb0 V:|-(>=10)-[UIImageView:0x1741f2c00](Names: '|':AVAudioOnlyIndicatorView:0x174189990)>",
"<NSLayoutConstraint:0x170282d00 V:[UIImageView:0x1741f2c00]-(>=10)-| (Names: '|':AVAudioOnlyIndicatorView:0x174189990 )>",
"<NSLayoutConstraint:0x174280be0 V:|-(0)-[AVAudioOnlyIndicatorView:0x174189990] (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280c30 V:[AVAudioOnlyIndicatorView:0x174189990]-(0)-| (Names: '|':UIView:0x174186a70 )>",
"<NSLayoutConstraint:0x174280960 V:|-(0)-[UIView:0x174186a70] (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1742809b0 V:[UIView:0x174186a70]-(0)-| (Names: '|':AVPlayerView:0x1701893e0 )>",
"<NSLayoutConstraint:0x1702853c0 'UIView-Encapsulated-Layout-Height' V:[AVPlayerView:0x1701893e0(1)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170282d00 V:[UIImageView:0x1741f2c00]-(>=10)-| (Names: '|':AVAudioOnlyIndicatorView:0x174189990 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

No mention of YTPlayerView-iframe-player.html in documentation.

There should probably be something in the documentation about the fact that as well as YTPlayerView.h and YTPlayerView.m you also need YTPlayerView-iframe-player.html as well in you're project.

This is of course if you import without using CocoaPods, which a lot of people still do.

Either this or this html file should be hard coded into YTPlayerView.m when it creates and loads the webView.

I don't know whether this is the right place for this, but it has the possibility to be a fix in code.

Not getting any playback when loading from a URL

In my viewDidLoad:

    _playerView = [[YTPlayerView alloc] init];
    [self.view addSubview: _playerView];

    _playerView.delegate = self;
    [_playerView loadVideoByURL: @"https://www.youtube.com/watch?v=XP106mADW1E" startSeconds: 0.0 suggestedQuality: kYTPlaybackQualityLarge];

If I replace the loadVideoByURL call with loadWithVideoID it will work fine, but my preference is not to try parsing this URL myself, especially because the iOS YouTube app uses a different, shortened URL. Am I missing something?

'Done' does not close the full-screen video permanently

Hello,

Essentially, the 'done' button doesn't work once you're in full-screen mode. If you click 'done' the video minimizes for 1-2 seconds, but then goes back to full-screen and starts playing from the point in the video where you had clicked done from. It's almost as though it resumes playing once the video has been buffered.

If you click 'done' and then quickly touch a button that calls [self.playerView pauseVideo]; this will prevent the video from going back to full-screen. Shouldn't this happen by default when you click 'done'?

This is iOS 7.1 (haven't tested iOS 8.0/8.1)

Any help on this would be much appreciated.

Thanks,
Pat

Resizing of UIWebView inside YTPlayerView

I was loading a video and when rotating the device the web view does not seem to resize properly.

This can be easily solved by adding the following just after init of the UIWebView:

webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

It might be better doing it with constraints as that is what should really be used for everything these days, but adding constraints programatically personally confuses me still. So I leave that task for someone with some more knowledge in the matter.

Autoplay doesn't seem to work

Hi,

I'm having some problems with the autoplay feature.
Has this something to do with apple or am I doing something wrong here?

This is the method I use to load the video, parameters like ”playsinline” and ”showinfo” seems to work fine.

  • (void)playVideoWithId:(NSString *)videoId {

    NSDictionary *playerVars = @{
                                 @"playsinline" : @1,
                                 @"autoplay" : @1,
                                 @"showinfo" : @0,
                                 @"rel" : @0,
                                 @"modestbranding" : @1,
                                 };
    
    [self.playerView loadWithVideoId:videoId playerVars:playerVars];
    

}

Thanks in advance.

AvailableQualityLevels doesn't work

when [UIWebview stringByEvaluatingJavaScriptFromString:@"some javascript"] returns an Array,
It always fail to convert returned string into NSArray.

How to make setPlaybackQuality work?

First, I've tried many solution, like http://goo.gl/OnJw0Z, but still not working.
Then I tried to invoke player.loadVideoById:startSecond:suggestQuality with hd720 during PLAYING state. But it still turns to low video quality.
Someday I tried to invoke player.setSize(1280,720), it did change quality to hd720! But video visible area is out of current player view bound (e.g. 320x180). Not a solution.

I wonder, is there any way to play high quality video on iPhone with youtube-ios-player-helper?

iOS YTPlayerView Animation Continues After Presenting View Controller Appears

When dismissing the full screen view controller that's launched for the iOS YTPlayerView, it animates towards to the top left corner of the device screen even when dismissing it with the view controller animation flag set to NO. As a result, it can continue animating the dismissal even after the presenting view controller has already displayed, causing undesirable results. The full screen player view controller should obey the animation flag sent with the dismissViewController call, or this should be a configurable setting within YTPlayerView.

iOS YTPlayerView Intermittently Resets Video After 5 Seconds And Start Playback Over

The iOS YTPlayerView, when displayed in full screen mode, intermittently resets videos after 5 seconds when a "start" and "end" parameters are used to play a segment of a video. The order of state changes are:

state = kYTPlayerStateBuffering
state = kYTPlayerStatePlaying
...
playback occurs for 5 seconds
...
state = kYTPlayerStateBuffering
state = kYTPlayerStatePlaying
...
playback restarts from configured "start" parameter
...

YTPlayerView parameters used are:

NSMutableDictionary *playerParams = [[NSMutableDictionary alloc] init];
[playerParams setObject : @"0" forKey : @"playsinline"];
[playerParams setObject : @"1" forKey : @"autoplay"];
[playerParams setObject : @"0" forKey : @"rel"];
[playerParams setObject : @"1" forKey : @"modestbranding"];
[playerParams setObject : @"1" forKey : @"fs"];

if (_endSecond > _startSecond)
{
    [playerParams setObject : [NSString stringWithFormat : @"%li", (long)_startSecond] forKey : @"start"];
    [playerParams setObject : [NSString stringWithFormat : @"%li", (long)_endSecond] forKey : @"end"];
}
else
{
    [playerParams setObject : [NSString stringWithFormat : @"%li", (long)_startSecond] forKey : @"start"];
}

[_ytPlayerView loadWithVideoId : _videoId playerVars : playerParams];

Restricted playback on iOS

Hi, I want to play some videos in my iOS app using YTPlayerView, I got following message after I start playing the video.

"This video contains contents from XXX. It is restricted from playback on certain sites."

The video plays well on my desktop browser. So I think the problem is not about region.
I use the following parameters.
NSDictionary *playerVars = @{
@"playsinline" : @1,
@"controls": @0,
@"showinfo": @0 };

Is it possible to allow embedded player to play those restricted videos in custom app? Thanks!

Fullscreen landscape in portrait app

Hi,
What would be the recommended way to support playing in landscape fullscreen mode in an app whose ViewControllers support only portrait orientation? Is that possible?
Thanks

Cocoa error 258

When loading my view, I get this error:

Received error rendering template: Error Domain=NSCocoaErrorDomain Code=258 "The operation couldn’t be completed. (Cocoa error 258.)"

Loop a video in iOS app

I am trying to loop a YouTube video in my iOS app. Below is my viewDidLoad method,

  • (void)viewDidLoad
    {
    [super viewDidLoad];

    self.playerView.delegate = self;

    NSDictionary *playerVars = @{
    @"playsinline" : @1,
    @"autoplay" : @0,
    @"showinfo": @0,
    @"controls": @0,
    @"loop" : @1
    };

    [self.playerView loadWithVideoId:selectedYTVideoId playerVars:playerVars];
    }

Auto play is working because of following code snippet,

  • (void)playerViewDidBecomeReady:(YTPlayerView *)playerView {

    [self.playerView playVideo];
    }

Also I am able to identify when the current video has complete it's playing state like below,

  • (void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state{

    if (state == kYTPlayerStateEnded) {
    NSLog(@" Play ended ");

    }
    }

I want to loop this video. If I put below line after the NSLog statement,

[self.playerView loadWithVideoId:selectedYTVideoId playerVars:playerVars];

the video will loop but before that the view become white. I can reduce the white color appearance for certain extent by editing the "YTPlayerView-iframe-player.html". But I fell that is not the best way to avoid problems with single video looping. Please guide me.

Play video (audio of video) in Background iOS

Hi
Im using YouTube Helper Library to play YouTube videos on my iOS application
I just need a way to continue audio (or video) playing in background ,
So when user click on home button i need him to be able to hear the voice
of the video ,
even when he look his device i need to him to be able to control the sound and click next and back button for audio playing .. How i can achieve that on YouTube Helper Library ?
@ikai , @ymotongpoo, @libor

The example project can't be run without CocoaPods

Without using CocoaPods the example project doesn't seem to work for me. It errors due to the lack of CocoaPods files. This is a bit a drawback for those of us who don't use CocoaPods or simply just want to download the project and test it does what we want quickly.

After all, this is an example project, shouldn't it just work, without any prerequisites?

diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

YTPlayerView frame resized issue

Hello,
I am using YTPlayerView in my iOS app. I am create YTPlayerView size is 320x165 but when video played in that view so size is 320x150. so why this frame changed?
I am trying to change frame size inside uiwebview but no any succcess.
Any solution for that?

Thanks,
Ankur

Enums not compatible with Swift

The enums can't be used in swift due to the fact that the still use "typedef enum {};" instead of "typedef NS_ENUM(,){};"

Take a Screenshot of Video playing in a YTPlayerView?

I'm trying to take a screenshot of a video playing in a YTPlayerView, but I can't seem to render the context of the video player and all I get is a black screen.

I have tried this capturing the contents of the GL layer with this method:

- (UIImage *)drawGlToImage
{
    int s = 1;
    UIScreen* screen = [ UIScreen mainScreen ];
    if ( [ screen respondsToSelector:@selector(scale) ] )
        s = (int) [ screen scale ];

    const int w = self.frame.size.width;
    const int h = self.frame.size.height;
    const NSInteger myDataLength = w * h * 4 * s * s;
    // allocate array and read pixels into it.
    GLubyte *buffer = (GLubyte *) malloc(myDataLength);
    glReadPixels(0, 0, w*s, h*s, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
    // gl renders "upside down" so swap top to bottom into new array.
    // there's gotta be a better way, but this works.
    GLubyte *buffer2 = (GLubyte *) malloc(myDataLength);
    for(int y = 0; y < h*s; y++)
    {
        memcpy( buffer2 + (h*s - 1 - y) * w * 4 * s, buffer + (y * 4 * w * s), w * 4 * s );
    }
    free(buffer); // work with the flipped buffer, so get rid of the original one.

    // make data provider with data.
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL);
    // prep the ingredients
    int bitsPerComponent = 8;
    int bitsPerPixel = 32;
    int bytesPerRow = 4 * w * s;
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
    CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
    CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
    // make the cgimage
    CGImageRef imageRef = CGImageCreate(w*s, h*s, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
    // then make the uiimage from that
    UIImage *myImage = [ UIImage imageWithCGImage:imageRef scale:s orientation:UIImageOrientationUp ];
    CGImageRelease( imageRef );
    CGDataProviderRelease(provider);
    CGColorSpaceRelease(colorSpaceRef);
    free(buffer2);

    return myImage;
}

(http://stackoverflow.com/questions/1352864/how-to-get-uiimage-from-eaglview/1945733)

However, It is not good practice to rely on UIWebView utilizing GL, or any libraries at all. Implementation details (especially in web frameworks) iterate quickly and remarkably. (http://stackoverflow.com/questions/16620100/capture-uiwebview-screenshot-of-video)

I cannot use a private method like CGImageRef UIGetScreenImage(void); as it no longer exists in the 64-bit SDK and because I'm shipping my app to the store.

Please advise of the best way to take a screenshot of a video playing in a UIWebView or YTPlayerView. Thank you.

Play inline works on iPad, but not on iPhone

Hi,
I have a universal app. I'm setting the playerVars parameter like this:

NSDictionary *playerVars = @{@"playsinline" : @1};
[playerView loadWithVideoId:videoID playerVars:playerVars];

Playing inline seems to work fine on iPad (in fact, it was playing inline even without the playerVars set), but on iPhone the player goes fullscreen whenever I start playing and it stops playing when I exit fullscreen. Am I doing something wrong? I would like to be able to play inline on iPhone too.
Thanks

Get Thumbnail

How to get the Thumbnail of the Video specified by the youtube URL...?

'fs' parameter dosen't work

'full screen' parameter doesn't work.
Either fs =0 or fs =1results in the full screen button in the control bar.

Mute not working

Muting the video programmatically doesn't work. Is there any way to accomplish that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.