6

Po wyeksportowaniu AVMutableComposition używam PHPhotoLibrary, aby zapisać wideo na rolce z aparatu. W zakończeniu obsługi creationRequestForAssetFromVideoAtFileURL:, ja wtedy otworzyć zapisany wideo w Instagram, tak:Białe wideo po otwarciu AVMutableComposition na Instagramie

__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]; 
      } 
     } 
    } 
}]; 

Około 50% czasu Instagram otwiera i wideo gra jak oczekiwano. W pozostałych 50% przypadków zarówno wideo, jak i podgląd są białe, a wszystko, co dostaję, to dźwięk. Zwykle jest to naprawiane przez wybranie innego filmu, a następnie powrót do mojego wideo. Film jest idealnie odtwarzany w rolce z aparatu, tylko Instagram powoduje problemy. Czy to jest problem, który Instagram może eksportować moje filmy w niewłaściwy sposób?

Są to moi AVAssetExportSession ustawienia:

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); 
    }); 
}]; 
+1

Daniel, myślę, że jesteśmy tego samego polowania wieloryba. [Moje pytanie] (http://stackoverflow.com/questions/39560386/avplayer-playback-fails-while-avassetexportsession-is-active-as-of-ios--10) –

+1

Masz rozwiązanie? Myślałem, że AVAssetExportSession musiała być aktywna, gdy zacząłem odtwarzanie, ale wydaje się, że dzieje się tak nawet po jej zakończeniu. Pomyślałem, że jeśli od razu go anulujesz, problem się nie wydarzy. –

+1

@AndresCanella Nie znalazłem jeszcze rozwiązania dla tego. Ponieważ widziałem problem tylko podczas eksportowania na Instagram, mogę skontaktować się z nim, aby sprawdzić, czy jest to znany błąd, czy nie. Ale tak, zdecydowanie wydaje się, że nasze pytania są tego samego pochodzenia. –

Odpowiedz

2

właśnie usłyszał od firmy Apple DTS. Zgadzają się także, że to wskazuje na błąd Apple iOS i poprosił mnie o zalogowanie.

Wycinam korzystanie z AVAssetExportSession, jak wspomniano powyżej i rozwiązał mój problem jako obejście. Wydaje się, że problem dotyczy tej metody, która jest prawdopodobnie zawarta w metodzie Instagrama, której używasz.

Więc aż jabłko rozwiązuje ten czy Instagram buduje obejść, nie wydaje się być rozwiązaniem tego problemu ... Bummer

+1

Rozumiem. Dziękuję za poinformowanie mnie o tym, co powiedział ci DTS, mam nadzieję, że wkrótce zostanie rozwiązany. –

+0

Wszelkie aktualizacje po stronie Apple? – Sam

Powiązane problemy