2010-12-16 99 views
4

我想做一个youtube这样的应用程序(Youtube Stream)http://itunes.apple.com/us/app/youtube-stream/id384383425?mt=8#为iPhone的应用程序,其中一些视频从YouTube上流式传输/下载并在没有启动iPhone的YouTube应用程序的同一应用程序中播放。 我搜索很多,找不到如何做it..can任何一个提出一个解决方案的线索......iphone:如何流和使用MPMoviePlayer在应用程序中播放的YouTube影片?

+0

磨憨,我在寻找相同的代码。如果你发现任何东西,请告诉我。 – Biko 2011-02-21 14:02:57

回答

2

我发现流/播放YouTube视频的iPhone应用程序内的一种方式,但我不知道苹果会认识到它或它的根据youttube术语和矛盾。娄我附上我的.h和.m文件PLZ检查,并说,它是如何工作..

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 *[email protected]"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

怎么样提取热链接,MP4的法律问题 - 法律和苹果商店兼容? – cDima 2012-06-03 04:20:52

1

这很容易 这是我的例子:https://github.com/comonitos/youtube_video

我用PSYouTubeExtractor.h类由彼得·斯坦伯格它可以让YouTube的MP4视频网址,比下载和观看是没有问题的

NSURLConnection的+ NSNotificationCenter + PSYouTubeExtractor + NSMutableData

+0

我试过这种方法与iPhone和它工作得很好。 但它不是与iPad ..视频播放,并且你可以听到视频的声音,但YouTube播放器没有显示。 – Amit 2012-04-08 16:50:47

+0

@comonitos,@阿密特请帮忙..how到implemnt这个班..cz代码不是两个模拟器和设备工作 – Bajaj 2013-04-22 05:42:51

相关问题