1

我的目标是将视频文件放在uipicker. 我已在数组中添加了我的视频文件名并成功提取了视频文件名和扩展名,但现在我的目标是当用户点击选择器行时,从数组中选择的视频将被传递给mpmovieplayercontroller对象,然后将播放电影请让我知道如何在一个文件完成后编写代码来播放另一个选定的文件,即 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

}
4

1 回答 1

0

您需要重组代码。

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

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

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

于 2012-11-12T14:31:40.273 回答