How to play YouTube videos using MPMoviePlayer? [duplicate] - ios

This question already has answers here:
Play YouTube videos with MPMoviePlayerController instead of UIWebView
(8 answers)
Closed 8 years ago.
How can i streaming video from youtube in my application.
I have tried but not only black screen appear so help me to play video from youtube in movieplayer.
Thanks

I think the only official way is to make it play inside a UIWebView.
However there is a project called XCDYouTubeKit that, I think, will do exactly what you want:
https://github.com/0xced/XCDYouTubeKit
That's allows you to make a youtube view play in a specific frame, that's maybe what your looking for.
example of use:
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
}
}];
Documentation is available here: http://cocoadocs.org/docsets/XCDYouTubeKit/2.0.1/
Good luck

NSURL *url=[NSURL URLWithString:#"http://www.youtube.com/watch?v=mDFKyp40XUc"];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
[self.myWebView loadRequest:request];

Related

How to play Youtube Video from a browser app on non full screen in Objective C

I am working on Browser app, I want when user searches any video on youtube.com the video is playing on full screen but I want the video to be open on a fixed size small frame, Say Half of phone screen size.
I have Video url and video id. I have integrated YOUTube API but as soon as I hit play button on youtube player it plays on full screen.
Please find codebase of integration
self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = webView.frame;
[self.playerView loadWithVideoId:str];
[webView.superview addSubview:self.playerView];
Please find the screenshots
When youtube player is added and After tap on play button
Help will be much appreciated.
Does you project have Controller named MainViewController , that controller should have issue with YTPlayerView, please check for this view in your view controller.
in most of the cases it will not defined in the class you have directly use in the code
Searching for the issue in your code i found a property of UIWebview which will help you in playing video inline setAllowsInlineMediaPlayback
With help of this you can directly play the youtube video in the webview,
Here is code sample which you can use to play youtube video
NSString *strVideoId = #"M7lc1UVf-VE";
NSString *videoURL = [NSString stringWithFormat:#"https://www.youtube.com/embed/%#?feature=player_detailpage&playsinline=1",strVideoId];
NSString* embedHTML = [NSString stringWithFormat:#"\
<html><head>\
<style type=\"text/css\">\
iframe {position:absolute; top:50%%; margin-top:-130px;}\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<iframe width=\"100%%\" height=\"240px\" src=\"%#\" frameborder=\"0\"></iframe>\
</body></html>",videoURL];
[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];
[self.mainwebview loadHTMLString:embedHTML baseURL:nil];
In this code you can pass any video id which you were passing in the loadWithVideoId of YTPlayerView
To change the width/height you can make change in the width=\"100%%\" height=\"240px\" portion of the iframe
It is working for me in the iPhone also which is looking like this:
iframe youtube play in iPhone
Another reference the setAllowsInlineMediaPlayback working in iPhone: https://stackoverflow.com/a/15189889/4557505
The image which you shown in the screenshot looks like particular video issue
Note This code does not require YTPlayerView so if this code works for you, you can remove the YTPlayerView from your project if this is not used anywhere else
Update Some video not playing:
I think this issue has not nothing to do with the specific implementation as for me it's not working in browser(with embed Url which we are setting in iFrame) or YTPlayerview also
But till than i check and may be find some issue in implementation and as you have mentioned:
Yes all videos worked on YTPlayerView. These videos work on normal
full screen mode but not with embedded player
If you want to make implementation in the YTPlayerview you can check the following code:
NSString *strVideoId = #"3bMYgo_S0Kc";
self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height/2);
[self.playerView loadWithVideoId:strVideoId playerVars:#{#"playsinline":#1}];
[_mainwebview addSubview:self.playerView];
[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];
In the loadWithVideoId we can provide the inline parameter which can solve the problem of full screen and this may work for you on the iPhone also
Note this video is not working on YTPlayer or in browser(embedded url) for me but based on your comment you can try this
#Pyro
setAllowsInlineMediaPlayback works only for ipad, I have already enabled it. and it does now worked, It is not allowing to play the video.
Image after implementation

radio streaming without MPMoviePlayerController

i am currently doing a small radio shoutcast for android and ios with kony.
everything is fine with android but for ios, i am creating a library to play the shoutcast.
Unfortunatly, it seems that the player of MPMoviePlayerController need to be set as a subview to work and i am unable to do that.
does anybody know an other solution to play a shoutcast on IOS?
I don't know about shoutcast but I imagine its similar to SoundCloud in which you use the API to parse the stream URL? If I'm right in thinking that then you simply need to put the URL into an NSURL and make sure to tell the MPMoviePlayerController the source, like so...
radioPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:YOUR_SHOUTCAST_STREAM_URL]];
radioPlayer.movieSourceType = MPMovieSourceTypeStreaming;
Then simply play
[radioPlayer prepareToPlay];
Hope that helps :)

Youtube Playlist in iphone app

I'm wondering wether its possible to play a youtube playlist in an IOS App. i've been struggling to find an answer for this for some time now. i've tried several html5 players, but they do not support youtube playlists. Other than that i've tried using this simple code:
NSURL *url = [NSURL URLWithString:array[selectedRowValue]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
But this will only play the playlist and you wont be able to navigate between the playlist videos.
my question is then is there an API or any kind of sample codes easy to use for this purpose?
i'm thinking about something like this:
You could try implementing a UIWebView into the tableview's header view and have the url change whenever a user selects a specific cell.
You can find the youtube player webview sample in the answer here YouTube Embed player in Iframe doesn't work in iOS6

Play Multiple Videos from one page

Ok, so I am creating a basic iPad app that needs to play 4 videos. Videos need to be accessed from the same page.
I have one page/landing screen with an image that I have placed 4 Round Rec Buttons on. The MediaPlayer/MediaPlayer.h framework works perfectly, exactly what I want. But right now all four buttons play the same video, mainly because there is only one set of code but that is my problem. I assumed that repeating the code would allow me to replace the pathForResource:#"Beginning_Bumper" ofType:#"m4v" section of code but I get re-implimentation errors and the build fails. I've tried looking for other apps or tutorials online with no results. Also thought this question was my answer, but nothing there.
Here is the code I have, without duplication. So this code just plays one of the videos. Hopefully all of that makes sense, but feel free to ask more questions.
#import "Video_Presentation1ViewController.h"
#implementation Video_Presentation1ViewController
-(IBAction)playvideo {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:#"Beginning_Bumper" ofType:#"m4v"]];
MPMoviePlayerViewController * playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:playerController];
playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[playerController.moviePlayer play];
[playerController release];playerController=nil;
}

Play YouTube videos with MPMoviePlayerController instead of UIWebView

I'm trying to stream some youTube videos using the MPMoviePlayerController but I'm having some problems. The code I'm using is pretty simple and I can play .m4v videos by passing a URL to initWithContentURL. When I launch the movie player the player comes up but just goes away after about 20 seconds. When I try it in the simulator I get an alert view that says the server is not configured correctly. Is there an argument I need to pass with the URL to get a specific type of video feed from google?
NSURL *videoURL = [NSURL URLWithString:#"http://www.youtube.com/v/HGd9qAfpZio&hl=en_US&fs=1&"];
MPMoviePlayerController *moviePlayer;
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[moviePlayer play];
I've also tried the following URL's
http://www.youtube.com/watch?v=HGd9qAfpZio
I have also seen the argument &format=1 and tried to add that to the end of both of the strings but no luck.
The only way to have a youtube video play inside your own app is to create a UIWebView with the embed tag from Youtube for the movie you want to play as the UIWebView's content. UIWebView will detect that the embedded object is a Youtube link, and the web view's content will be the youtube preview for the video. When your user clicks the preview, the video will be shown in an MPMoviePlayerController. This is the technique described at the link that Muxecoid provided (how to play youtube videos within an application), and this is (as far as I know of) the only way to have a youtube video play within an application. You can still have the Youtube application launch by passing the youtube URL to -[UIApplication openURL:], but of course this closes your own application which is often undesirable.
Unfortunately, there's no way to directly play a youtube video with MPMoviePlayerController because youtube does not expose direct links to the video files.
If you are using
Code:
- (void)embedYouTube:(NSString*)url frame:(CGRect)frame {
NSString* embedHTML = #"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<embed id=\"yt\" src=\"%#\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
</body></html>";
NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];
if(videoView == nil) {
videoView = [[UIWebView alloc] initWithFrame:frame];
[self.view addSubview:videoView];
}
[videoView loadHTMLString:html baseURL:nil];
}
Source:
Just refer this link
Make sure that you test it on device and not on the simulator. Since simulator will always display question mark with blue box (it doesn't have quick-time player).
As I wrote above in my comment I had to do this in a project I was working on. I've solved this problem and submitted the code on github.
You can check the source and fork it here.
It basically takes a youtube url and gets all the iOS compatible video urls.
Hope this is to any help!
Cheers
I just stumbled across someone who was able to place a YouTube video inside an MPMoviePlayerController. It does appear possible now.
LBYouTubeView
To play you tube videos you need to extract the url before passing the url into MPMoviePlayer. You can't play it directly.
My github repo has a demo implementation of this.
See:
https://github.com/DpzAtMicRO/IOSYoutubePlayer
Try it, this makes it possible to load and play youtube video directly in MPMoviePlayerlike any other video and is pretty good approach too.
EDIT: Make sure that you go through the Readme.md well before using this in your project
It's as simple as taking the src element of the iframe for the new embed code and calling
[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];
Check the following link. I think it will help you.
https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html
There is an official way to embed YouTube video in iOS application which is provided by Google.
Install library via cocoapods: pod "youtube-ios-player-helper"
import by: #import “YTPlayerView.h”
Use UIView and set class to YTPlayerView or create object of YTPlayerView programatically.
Load video: [self.playerView loadWithVideoId:#"M7lc1UVf-VE"];
There is also playVideo and stopVideo methods available. For more info visit this Link

Resources