Iphone: how to stream and play YouTube videos in an app using MPMoviePlayer?

I want to make a youtube application like this (Youtube Stream) http://itunes.apple.com/us/app/youtube-stream/id384383425?mt=8# iphone application where some videos are transferred / downloaded from youtube and played in One application without launching the youtube iphone application. I searched a lot, but could not find clues on how to do this .. can anyone suggest a solution ...

+4
source share
2 answers

I found a way to stream / play youtube videos inside the iphone app, but I don’t know that the apple will recognize him or him under the terms and conditions of youttube. Bellow, I attach my .h and .m file plz files and tell you how it works.

YoutubePlayerViewController.h

#import<UIKit/UIKit.h>
#import<MediaPlayer/MediaPlayer.h>

@interface YoutubePlayerViewController : UIViewController
{
    UITextField *yurl;  
    NSMutableData *responseData;
    NSString *cacheLink;
    MPMoviePlayerController *moviePlayer;

}

@property(nonatomic,retain)IBOutlet UITextField *yurl;
@property(nonatomic,retain)NSString *cacheLink;

-(IBAction)Play:(id)sender;
-(IBAction)removeKeyboard;
@end 

enter image description here

// --------------------------------------------- --- --------------------------------

//YoutubePlayerViewController.m

#import "YoutubePlayerViewController.h"

@implementation YoutubePlayerViewController
@synthesize yurl,cacheLink;


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"view did load");
}


-(IBAction)removeKeyboard
{

    [yurl resignFirstResponder];

}

-(IBAction)Play:(id)sender
{

    //1.get the url
    NSString *url=yurl.text;
    //NSString *url=@"http://www.youtube.com/watch?v=t2o5MhaSWRs";
    //2.show loding view

    //3.make http request
    responseData = [[NSMutableData data] retain];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];





    //3.parse jason string for itag=18
    //5.create an NSURL with that string
    //6.start the player with url

}



- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"did receving response");
    [responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
    //NSLog(@"receving data");
    [responseData appendData:data];

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{
    NSLog(@"Connection failed: %@", [error description]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    NSLog(@"%d",responseData.length);
    NSString* strServerResponse= [[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding];

    NSLog(@"%@",strServerResponse);
    NSLog(@"\n***********************************************\n");

    NSArray *temp=[strServerResponse componentsSeparatedByString:@"swfConfig"];
    strServerResponse=[temp objectAtIndex:1];

    temp=[strServerResponse componentsSeparatedByString:@".c.youtube.com,18|"];
    strServerResponse=[temp objectAtIndex:1];

    temp=[strServerResponse componentsSeparatedByString:@"||"];
    strServerResponse=[temp objectAtIndex:0];

    strServerResponse=[strServerResponse stringByReplacingOccurrencesOfString:@"\\" withString:@""];
    NSLog(@"%@",strServerResponse);
    self.cacheLink=strServerResponse;


    UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"link" message:self.cacheLink delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
    [alert show];
    [alert release];

    NSURL *url=[[NSURL alloc] initWithString:self.cacheLink];
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.view addSubview:moviePlayer.view];
    moviePlayer.view.frame = CGRectMake(5,150,310,230);  
    moviePlayer.view.backgroundColor=[UIColor blackColor];
    [moviePlayer play]; 

    [connection release];
}              


/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end
+2
source

Easy. Here is my example: https://github.com/comonitos/youtube_video

I used the PSYouTubeExtractor.h class from Peter Steinberger. It can get youtube mp4 youtube url, and downloading and viewing is not a problem.

NSURLConnection + NSNotificationCenter + PSYouTubeExtractor + NSMutableData p>

+1
source

All Articles