After AVAssetExportSession has complete export video. I have plan to garb Video Path to upload via Youtube. but [GDataUtilities MIMETypeForFileAtPath:path defaultMIMEType:@"video/mp4"]; it only accept NSString. Is it possible to convert NSUrl in to NSString for video file path.
i have try to use NSString *path = [ExportoutputURL absoluteString]; but it crash.
Here is the Code
- (void)exportDidFinish:(AVAssetExportSession*)session { ExportoutputURL = session.outputURL; _exporting = NO; NSIndexPath *exportCellIndexPath = [NSIndexPath indexPathForRow:2 inSection:kProjectSection]; ExportCell *cell = (ExportCell*)[self.tableView cellForRowAtIndexPath:exportCellIndexPath]; cell.progressView.progress = 1.0; [cell setProgressViewHidden:YES animated:YES]; [self updateCell:cell forRowAtIndexPath:exportCellIndexPath]; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:ExportoutputURL]) { [library writeVideoAtPathToSavedPhotosAlbum:ExportoutputURL completionBlock:^(NSURL *assetURL, NSError *error){ dispatch_async(dispatch_get_main_queue(), ^{ if (error) { NSLog(@"writeVideoToAssestsLibrary failed: %@", error); UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[error localizedDescription] message:[error localizedRecoverySuggestion] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [alertView release]; } else { _showSavedVideoToAssestsLibrary = YES; ExportCell *cell = (ExportCell*)[self.tableView cellForRowAtIndexPath:exportCellIndexPath]; [cell setDetailTextLabelHidden:NO animated:YES]; [self updateCell:cell forRowAtIndexPath:exportCellIndexPath]; NSArray *modes = [[[NSArray alloc] initWithObjects:NSDefaultRunLoopMode, UITrackingRunLoopMode, nil] autorelease]; [self performSelector:@selector(hideCameraRollText) withObject:nil afterDelay:5.0 inModes:modes]; } }); }]; } [library release]; } - (void)uploadVideoFile { NSString *devKey = DEVELOPER_KEY; GDataServiceGoogleYouTube *service = [self youTubeService]; [service setYouTubeDeveloperKey:devKey]; NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser]; // load the file data NSString *path = [ExportoutputURL absoluteString];//[[NSBundle mainBundle] pathForResource:@"video_2451" ofType:@"mp4"];//[mFilePathField stringValue]; NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:path]; NSString *filename = [path lastPathComponent]; // gather all the metadata needed for the mediaGroup NSString *titleStr = @"Upload Test";//[mTitleField stringValue]; GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr]; NSString *categoryStr = @"Entertainment";//[[mCategoryPopup selectedItem] representedObject]; GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr]; [category setScheme:kGDataSchemeYouTubeCategory]; NSString *descStr = @"GData Description";//[mDescriptionField stringValue]; GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr]; NSString *keywordsStr = @"RAGOpoR Demo";//[mKeywordsField stringValue]; GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr]; BOOL isPrivate = NO;//([mPrivateCheckbox state] == NSOnState); GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup]; [mediaGroup setMediaTitle:title]; [mediaGroup setMediaDescription:desc]; [mediaGroup addMediaCategory:category]; [mediaGroup setMediaKeywords:keywords]; [mediaGroup setIsPrivate:isPrivate]; NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:path defaultMIMEType:@"video/mp4"]; // create the upload entry with the mediaGroup and the file GDataEntryYouTubeUpload *entry; entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup fileHandle:fileHandle MIMEType:mimeType slug:filename]; SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:); [service setServiceUploadProgressSelector:progressSel]; GDataServiceTicket *ticket; ticket = [service fetchEntryByInsertingEntry:entry forFeedURL:url delegate:self didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)]; [self setUploadTicket:ticket]; GTMHTTPUploadFetcher *uploadFetcher = (GTMHTTPUploadFetcher *)[ticket objectFetcher]; } Error EXC_BAD_ACCESS at
NSString *path = [ExportoutputURL absoluteString];
[ExportoutputURL retain];right after you initiate it and see if it still crashes. If not then that's you problem and you should dig little deeper.relativePathinstead ofabsoluteString