Sto lavorando a un'app che richiede la modifica dei video (impostazione degli overlay). Ora, mentre i video ripresi dagli iPhone vengono modificati bene, quelli sparati dai telefoni Android stanno diventando vuoto dopo la modifica.I video ripresi dai telefoni Android si sono rovinati dopo l'editing con AVFoundation iOS
Non riesco a immaginare quale potrebbe essere il problema. Gradirei un aiuto immediato.
Questo è uno dei metodi (funzionalità Trim).
- (IBAction)cutButtonTapped:(id)sender {
hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Encoding...";
[self.playButton setBackgroundImage:[UIImage imageNamed:@"video_pause.png"] forState:UIControlStateNormal];
NSString *uniqueString = [[NSProcessInfo processInfo]globallyUniqueString];
//do this to export video
NSURL *videoFileUrl = [NSURL fileURLWithPath:[AppHelper userDefaultsForKey:@"videoURL"]];
AVAsset *anAsset = [[AVURLAsset alloc] initWithURL:videoFileUrl options:nil];
NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:anAsset];
if ([compatiblePresets containsObject:AVAssetExportPresetMediumQuality]) {
self.exportSession_ = [[AVAssetExportSession alloc]
initWithAsset:anAsset presetName:AVAssetExportPresetPassthrough];
// Implementation continues.
// NSURL *furl = [self newURLWithName:[uniqueString stringByAppendingString:@".mov"]];
NSURL *furl = [self newURLWithName:[uniqueString stringByAppendingString:[NSString stringWithFormat:@".%@",[videoFileUrl pathExtension]]]];
self.exportSession_.outputURL = furl;
self.exportSession_.outputFileType = AVFileTypeMPEG4;
CMTime start = CMTimeMakeWithSeconds(self.startTime, anAsset.duration.timescale);
CMTime duration = CMTimeMakeWithSeconds(self.stopTime-self.startTime, anAsset.duration.timescale);
CMTimeRange range = CMTimeRangeMake(start, duration);
CMTimeShow(self.exportSession_.timeRange.duration);
self.exportSession_.timeRange = range;
CMTimeShow(self.exportSession_.timeRange.duration);
[self.exportSession_ exportAsynchronouslyWithCompletionHandler:^{
switch ([self.exportSession_ status]) {
case AVAssetExportSessionStatusFailed:
NSLog(@"Export failed: %@", [[self.exportSession_ error] localizedDescription]);
break;
case AVAssetExportSessionStatusCancelled:
NSLog(@"Export canceled");
break;
default:
NSLog(@"NONE");
dispatch_async(dispatch_get_main_queue(), ^{
// [self playDocumentDirectoryVideoWithURLString:[uniqueString stringByAppendingString:@".mov"]];
[self playDocumentDirectoryVideoWithURLString:[uniqueString stringByAppendingString:[NSString stringWithFormat:@".%@",[videoFileUrl pathExtension]]]];
});
}
}];
}
}
Qualcuno potrebbe aiutarmi con questo?
C'è una cosa che non capisco: Avete un problema con il vostro iOS o fare il vostro avere un problema con la tua applicazione Android ? Voglio dire, quello che capisco è che hai un problema con i video che sono stati girati da un telefono Android quando vuoi modificare questi video su un iPhone. Ma penso che il tuo problema sia: la tua app per iOS funziona bene, la tua app per Android no. – Randy
Nell'app per Android non esiste questo tipo di file.FFMPEG è stato utilizzato per l'intero processo di editing video. Ma in app iOS, ho utilizzato AVFoundation per eseguire tutte le attività di editing video (taglio, velocità, sovrapposizione, fusione). funziona bene per i video presi da iPhone, ma non per i video presi da Android. – Reckoner
Puoi mostrarci il tuo codice? – Randy