Я работаю над приложением, которое требует редактирования видео (установка оверлей). Теперь, когда видеоролики, снятые с iPhone, редактируются в порядке, те, которые снимаются с телефонов Android, получают пустой после редактирования.Видеоролики, снятые с телефонов Android, разрушаются после редактирования с помощью AVFoundation iOS
Я не могу представить, в чем проблема. Я был бы признателен за немедленную помощь.
Это один из методов (функциональность 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]]]];
});
}
}];
}
}
Может кто-нибудь, пожалуйста, помогите мне с этим?
Там что-то я не понимаю: у вас есть проблемы с приложением IOS или сделать ваш имеют проблемы с Android приложения ? Я имею в виду, что я понимаю, что у вас есть проблема с видеороликами, снятыми на телефоне Android, когда вы хотите редактировать эти видео на iPhone. Но я думаю, что ваша проблема: ваше приложение iOS работает хорошо, ваше приложение для Android этого не делает. – Randy
В приложении для Android такой проблемы нет. Библиотека FTMPEG использовалась там для всего процесса редактирования видео. Но в приложении iOS я использовал AVFoundation для выполнения всех задач редактирования видео (вырезание, скорость, наложение, слияние). хорошо работает для видео, снятых с iPhone, но не для видео, снятых с android. – Reckoner
Не могли бы вы показать нам свой код? – Randy