1

ビデオ ファイルの内容を 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_format を .mov & .3Gp に設定すると正常に動作しますが、mimeType/file_format を .mp4 ファイルに設定すると、ビデオをカメラ ロールに保存する際に問題が発生します。

4

1 に答える 1