Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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
无法将.mp4视频文件保存到iphone相机卷?_Iphone_Ios_Objective C_Media_Camera Roll - Fatal编程技术网

无法将.mp4视频文件保存到iphone相机卷?

无法将.mp4视频文件保存到iphone相机卷?,iphone,ios,objective-c,media,camera-roll,Iphone,Ios,Objective C,Media,Camera Roll,我收到了NSData格式的视频文件内容,并使用以下代码在MPMoviePlayerController中成功播放该文件 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *FileExtension=[[NSString

我收到了NSData格式的视频文件内容,并使用以下代码在MPMoviePlayerController中成功播放该文件

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *FileExtension=[[NSString alloc]init];

if([contentType hasPrefix:@"video"] || [contentType isEqualToString:@"application/video"]) {
    FileExtension=@"mov";
   //FileExtension=@"mp4";
}
else
{
  FileExtension=[contentType lastPathComponent];
}

 //appFile is type of NSString.
 appFile = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"MyFile.%@",FileExtension]];

//videoData is type of NSData
[videoData writeToFile:appFile atomically:YES]; 

NSURL *fileURL = [NSURL fileURLWithPath:appFile isDirectory:NO];

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
moviePlayerController.view.frame = self.view.bounds;
moviePlayerController.movieSourceType = MPMovieSourceTypeFile;
moviePlayerController.fullscreen = YES;
moviePlayerController.shouldAutoplay=NO;

[self.view addSubview:moviePlayerController.view];
[moviePlayerController prepareToPlay];
但我无法将此视频文件写入/保存到相机卷,这是我将代码写入相机卷的代码

  ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
  NSURL *filePathURL = [NSURL fileURLWithPath:appFile isDirectory:NO];
  if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:filePathURL]) {
    [library writeVideoAtPathToSavedPhotosAlbum:filePathURL completionBlock:^(NSURL *assetURL, NSError *error){
        if (error) {
            NSLog(@"Not success");
        } else {
            NSLog(@"success");
        }
    }];

} 

当我将mimeType/file_格式设置为.mov和.3Gp时,这段代码可以正常工作,但当mimeType/file_格式设置为.mp4文件时,我遇到了将视频保存到相机卷的问题

如果通过以下方式更改应用文件,则可以将.mp4转换为.mov:

您的代码:

 appFile = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"MyFile.%@",FileExtension]];
新代码:

 appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.mov"];
SO会自动将.mp4转换为.mov