После экспорта AVMutableComposition
я использую PHPhotoLibrary
, чтобы сохранить видео в альбоме камеры. Затем в обработчике завершения creationRequestForAssetFromVideoAtFileURL:
я открываю сохраненное видео в Instagram, например так:
__block PHObjectPlaceholder *videoAssetPlaceholder;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *req = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:localVideoURL];
videoAssetPlaceholder = req.placeholderForCreatedAsset;
} completionHandler:^(BOOL success, NSError *error) {
if (success) {
completion(YES);
NSString *localID = videoAssetPlaceholder.localIdentifier;
NSRange rangeOfSlash = [localID rangeOfString:@"/"];
if (rangeOfSlash.location != NSNotFound) {
NSString *assetID = [localID substringToIndex:rangeOfSlash.location];
NSURL *instagramURL = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@", assetID]];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
[[UIApplication sharedApplication] openURL:instagramURL];
}
}
}
}];
Примерно в 50 % случаев Instagram открывается, и видео воспроизводится так, как ожидалось. Однако в остальных 50% случаев и видео, и предварительный просмотр белые, и все, что я получаю, это звук. Обычно это исправляется путем выбора другого видео, а затем возврата к моему видео. Видео отлично воспроизводится в фотопленке, проблемы вызывает только Instagram. Это проблема Instagram или я неправильно экспортирую свои видео?
Это мои настройки AVAssetExportSession
:
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition
presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = url;
exporter.outputFileType = AVFileTypeMPEG4;
exporter.shouldOptimizeForNetworkUse = YES;
exporter.videoComposition = mainCompositionInst;
[exporter exportAsynchronouslyWithCompletionHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
handler(exporter.outputURL);
});
}];
AVAssetExportSession
после захвата, это может быть не вариант для вас, поскольку вы используете API, если, возможно, вы не предоставите точный формат, который хочет Instagram?... Я используюAVCaptureSession
сAVAssetWriter
для корректировки изображения во время захвата... - person Andres Canella   schedule 20.09.2016