iphone:How to stream and play youtube video with in application using MPMoviePlayer?

后端 未结 2 615
眼角桃花
眼角桃花 2020-12-14 13:30

I want to make a youtube app like this (Youtube Stream) http://itunes.apple.com/us/app/youtube-stream/id384383425?mt=8# app for the iphone, where some videos are streamed/do

相关标签:
2条回答
  • I found a way to stream/play youtube video inside iphone app, but i don't know apple will recognize it or its under youttube terms and condictions. Bellow i attach my .h and .m file plz check and say 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
    
    0 讨论(0)
  • 2020-12-14 14:12

    It's easy Here is my example: https://github.com/comonitos/youtube_video

    I used PSYouTubeExtractor.h class by Peter Steinberger It can get youtube mp4 video url and than downloading and viewing is not a problem

    NSURLConnection + NSNotificationCenter + PSYouTubeExtractor + NSMutableData

    0 讨论(0)
提交回复
热议问题