如何在完成一个视频后播放另一个视频,因为用户在uipickerview中选择了视频名称

时间:2012-11-12 13:19:11

标签: ios5 video mpmovieplayercontroller

我的目标是将视频文件放在uipicker中。我已经在一个数组中添加了我的视频文件名并成功提取了视频文件名和扩展名,但现在我的目标是当用户点击选择器行时,然后从阵列中选择的视频将传递给mpmovieplayercontroller对象然后播放电影请让我知道如何在完成一个文件之后编写代码来播放另一个选定的文件iein 1mpmovieplaybackfinished`

播放单个视频文件的代码如下。

请告诉我如何播放阵列中的其他视频:

-(IBAction)play:(id)sender
{
for (i = 0;i<[arrayofvideo count];i++) {<br /> NSLog(@"%d",i);

NSString *fullFileName = [NSString stringWithFormat:@"%@",[arrayofvideo objectAtIndex:i]];
NSString *filename = [fullFileName stringByDeletingPathExtension];

NSLog(@"%@",filename);
NSString *extension = [fullFileName pathExtension];
NSLog(@"%@",extension);


NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"filename"
ofType:@"extension"]];
movieplayer = [[MPMoviePlayerController alloc]initWithContentURL:url];
movieplayer.movieSourceType = MPMovieSourceTypeFile;
movieplayer.controlStyle = MPMovieControlStyleDefault;

movieplayer.view.frame = CGRectMake(0,0,300,400);
[self.view addSubview:movieplayer.view];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:movieplayer];

//---play movie---
[movieplayer play];
}



-(void)movieFinishedCallback:(NSNotification*) aNotification 
{
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[player stop];
// self.view removeFromSuperView;
[self.view removeFromSuperview];

//call the play button again
// pls tell me what to write here to call play function

}

1 个答案:

答案 0 :(得分:0)

您需要重新构建代码。

您发布的代码会从您的视频路径名数组中构建一个路径名,然后使用@“filename”的固定文件名。那不对。

您应该编写一个方法“playFileAtIndex”,它在特定索引处找到文件名并播放该文件。我建议在方法中添加一个BOOL参数playMultipleVideos。如果该标志为true,则该方法将设置movieFinishedCallback以增加索引并开始播放下一部电影。

然后使您的按钮IBAction方法将索引iVar设置为所选行并调用playFileAtIndex方法。