2013-02-14 10 views
5

UIImagepickercontrollerのdidFinishPickingMediaWithInfoのメソッドからinputurl [info objectForKey:UIImagePickerControllerMediaURL]を取得しています。UIImagepickercontroller:低品質のビデオエラーに変換する

NSURL *inputURL = [NSURL URLWithString:inputurlstring]; 

私はこのコード

 NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *videoPath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"capturedvideo.MOV"]; 
     NSURL *outputURL = [NSURL fileURLWithPath:videoPath]; 

からoutputurl与えている私は、私が唯一の大きなファイルを使用する場合、私は次のエラーを取得しています低品質のビデオに

- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL 
    outputURL:(NSURL*)outputURL 
    handler:(void (^)(AVAssetExportSession*))handler 
    { 

    [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil]; 
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality]; 
    exportSession.outputURL = outputURL; 
    exportSession.outputFileType = AVFileTypeQuickTimeMovie; 

    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) 
    { 
    if (exportSession.status == AVAssetExportSessionStatusCompleted) 
    { 
    printf("completed\n"); 

    } 
    else 
    { 
    printf("error\n"); 
    NSLog(@"error is %@",exportSession.error); 

    } 

    }]; 
}   

を取得するには、次のコードを使用していました。私は小さなサイズのビデオファイルを使用するとき、私は何のエラーも得られなかったので。代わりにのみ、そのreference urlを通して、あなたの動画にアクセスすることができ、この

[info objectForKey:UIImagePickerControllerMediaURL]; 

使用

NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; 

AVAssetLibrary

Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x616d890   
{NSErrorFailingURLStringKey=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV, NSErrorFailingURLKey=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV, NSLocalizedDescription=unknown error, NSUnderlyingError=0x2d1460 "The operation couldn’t be completed. (OSStatus error -12935.)", NSURL=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV} 
+0

大きなビデオをトリミングしていますか?トリムがプライベートフォルダに格納されているようです。 –

+0

私は低品質に変換しています。ドキュメントディレクトリに保存しています。@AlbertRenshaw – Suresh

+4

変換をスキップして、UIImagePickerControllerのvideoQualityプロパティをUIImagePickerControllerQualityTypeLowに設定してみませんか? –

答えて

1

上記のコードは完全に動作しています。唯一の変更はinputURLです。

私はfileURLWithPathにinputURLを変更した後:

NSURL *inputURL = [NSURL fileURLWithPath:inputurlstring]; 

今のは完璧に動作します。

関連する問題