Белое видео при открытии AVMutableComposition в Instagram
После того, как я экспортирую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);
});
}];