MPMoviePlayerController不播放新保存的video文件

我正在使用imagePickerController来录制video。 在imagePickerController:didFinishPickingMediaWithInfo: function我试图将video设置为先前定义的MPMoviePlayerController:

 if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]){ NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL]; [self.moviePlayer setContentURL:movieUrl]]; } 

这工作正常,video确实在播放。 但是我想保存文件供以后使用。 当我这样做并使用保存的文件为moviePlayer,没有任何反应:

  • 我试过这个(将数据保存到新文件)

     NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *newPath = [directory stringByAppendingPathComponent:@"myMovie.mov"]; NSData *videoData = [NSData dataWithContentsOfURL:movieUrl]; [videoData writeToFile:newPath atomically:NO]; [self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 
  • 或者这个(将临时video文件复制到我的文档文件夹)

     NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *newPath = [directory stringByAppendingPathComponent:@"myMovie.mov"]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error = nil; [fileManager copyItemAtPath:[videoUrl path] toPath:newPath error:&error]; [self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 

没有任何成功,即使newPath上的文件确实存在……我做错了什么?

好的,我终于找到了这个问题。 问题实际上不是MPMoviePlayerController,而是使用以下行:

 [self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 

我通过用以下代码替换该行来修复它:

 [self.moviePlayer setContentURL:[NSURL fileURLWithPath:newPath isDirectory:NO]]; 

希望能帮助别人!

使用以下代码:

 NSData *movieData; NSError *dataReadingError = nil; movieData = [NSData dataWithContentsOfURL: movieURL options:NSDataReadingMapped error:&dataReadingError]; if(movieData != nil) NSLog(@"Successfully loaded the data."); else NSLog(@"Failed to load the data with error = %@", dataReadingError);