Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone:如何使用MPMoviePlayer在应用程序中流式播放youtube视频?_Iphone - Fatal编程技术网

iphone:如何使用MPMoviePlayer在应用程序中流式播放youtube视频?

iphone:如何使用MPMoviePlayer在应用程序中流式播放youtube视频?,iphone,Iphone,我想为iphone制作一个youtube应用程序(youtube Stream),其中一些视频从youtube流式传输/下载,并在同一应用程序中播放,而无需启动iphone的youtube应用程序。。 我搜了很多东西,但找不到如何做的线索..有人能提出一个解决方案吗..我找到了一种在iphone应用程序中流式播放youtube视频的方法,但我不知道苹果会认出它或它的youtube条款和条件。下面我附上我的.h和.m文件,请检查并说明它是如何工作的 YoutubePlayerViewControl

我想为iphone制作一个youtube应用程序(youtube Stream),其中一些视频从youtube流式传输/下载,并在同一应用程序中播放,而无需启动iphone的youtube应用程序。。
我搜了很多东西,但找不到如何做的线索..有人能提出一个解决方案吗..

我找到了一种在iphone应用程序中流式播放youtube视频的方法,但我不知道苹果会认出它或它的youtube条款和条件。下面我附上我的.h和.m文件,请检查并说明它是如何工作的

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 
这很容易 以下是我的例子:

我使用了Peter Steinberger的PSYouTubeExtractor.h类,它可以获取youtube mp4视频url,下载和查看并不是问题


NSURLConnection+NSNotificationCenter+PSYouTubeExtractor+NSMutableData

Mohan,我正在寻找相同的代码。如果你发现了什么,请告诉我。我在iPhone上试用过这种方法,效果很好。但它不适用于iPad。。视频播放时,您可以听到视频的声音,但youtube播放器没有显示。@comonitos,@amit请帮助。.如何执行此类。.cz代码在模拟器和设备上都不起作用如何处理提取mp4的热链接的法律问题-法律和苹果商店兼容?
#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