Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can have the UIImagePickerController enable trimming</p> <pre><code>UIImagePickerController *videoRecorder = [[UIImagePickerController alloc]init]; NSArray *sourceTypes = [UIImagePickerController availableMediaTypesForSourceType:videoRecorder.sourceType]; NSLog(@"Available types for source as camera = %@", sourceTypes); if (![sourceTypes containsObject:(NSString*)kUTTypeMovie] ) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Device Not Supported for video Recording." delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No",nil]; [alert show]; [alert release]; return; } videoRecorder.allowsEditing = YES; </code></pre> <p>Unfortunately after you get back from the imagePickerController, You are forced to convert the video manually.</p> <pre><code>-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { if ([self.popoverLibraryBrowser isPopoverVisible]) { [self.popoverLibraryBrowser dismissPopoverAnimated:YES]; } NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; NSNumber *start = [info objectForKey:@"_UIImagePickerControllerVideoEditingStart"]; NSNumber *end = [info objectForKey:@"_UIImagePickerControllerVideoEditingEnd"]; // if start and end are nil then clipping was not used. // You should use the entire video. int startMilliseconds = ([start doubleValue] * 1000); int endMilliseconds = ([end doubleValue] * 1000); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSFileManager *manager = [NSFileManager defaultManager]; NSString *outputURL = [documentsDirectory stringByAppendingPathComponent:@"output"] ; [manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil]; outputURL = [outputURL stringByAppendingPathComponent:@"output.mp4"]; // Remove Existing File [manager removeItemAtPath:outputURL error:nil]; //[self loadAssetFromFile:videoURL]; [self.recorder dismissModalViewControllerAnimated:YES]; AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:videoURL options:nil]; AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:videoAsset presetName:AVAssetExportPresetHighestQuality]; exportSession.outputURL = [NSURL fileURLWithPath:outputURL]; exportSession.outputFileType = AVFileTypeQuickTimeMovie; CMTimeRange timeRange = CMTimeRangeMake(CMTimeMake(startMilliseconds, 1000), CMTimeMake(endMilliseconds - startMilliseconds, 1000)); exportSession.timeRange = timeRange; [exportSession exportAsynchronouslyWithCompletionHandler:^{ switch (exportSession.status) { case AVAssetExportSessionStatusCompleted: // Custom method to import the Exported Video [self loadAssetFromFile:exportSession.outputURL]; break; case AVAssetExportSessionStatusFailed: // NSLog(@"Failed:%@",exportSession.error); break; case AVAssetExportSessionStatusCancelled: // NSLog(@"Canceled:%@",exportSession.error); break; default: break; } }]; //NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; //NSString *videoStoragePath;//Set your video storage path to this variable //[videoData writeToFile:videoStoragePath atomically:YES]; //You can store the path of the saved video file in sqlite/coredata here. } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload