的MPMoviePlayerController不打新保存的视频文件(MPMoviePlayerCo

2019-09-16 08:35发布

我使用的是imagePickerController录制视频。 在imagePickerController:didFinishPickingMediaWithInfo:功能我试图将视频设置为先前定义的MPMoviePlayerController:

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

这是工作的罚款和视频确实打。 但我想保存供以后使用的文件。 当我做到这一点,使用的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]]; 
  • 或本(复制临时的视频文件到我的文档文件夹)

     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确实存在......我在做什么错?

Answer 1:

好吧,我终于找到了问题。 这个问题实际上不是用的MPMoviePlayerController,但与线:

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

我固定它通过替换该行:

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

希望可以帮助别人!



Answer 2:

使用下面的代码:

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); 


文章来源: MPMoviePlayerController doesn't play newly saved video file