2013-02-14 26 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); 

    } 

    }]; 
}   

जब मैं बड़ी फ़ाइलों को केवल का उपयोग मैं निम्न त्रुटि हो रही है निम्नलिखित कोड का इस्तेमाल किया। क्योंकि जब मैं छोटी आकार की वीडियो फ़ाइल का उपयोग करता हूं तो मुझे कोई त्रुटि नहीं मिली।

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 पर UIImagePickerControllerQualityTypeLow पर वीडियो गुणवत्ता गुण सेट नहीं करते हैं? –

उत्तर

1

उपर्युक्त कोड पूरी तरह से काम करता है। एकमात्र परिवर्तन inputURL है।

के बाद मैं fileURLWithPath को inputURL बदल दिया है:

NSURL *inputURL = [NSURL fileURLWithPath:inputurlstring]; 

अब अपने पूरी तरह से काम करता है।

0
इस

[info objectForKey:UIImagePickerControllerMediaURL]; 

उपयोग

NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; 

AVAssetLibrary केवल अपने reference url के माध्यम से अपने वीडियो का उपयोग कर सकते करने के बजाय