6

Nachdem ich einen AVMutableComposition exportiere, verwende ich PHPhotoLibrary, um das Video in der Kamerarolle zu speichern. Im creationRequestForAssetFromVideoAtFileURL: Abschluss-Handler, öffne ich dann das gespeicherte Video in Instagram, etwa so:Weißes Video beim Öffnen von AVMutableComposition in 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]; 
      } 
     } 
    } 
}]; 

Etwa 50% der Zeit Instagram wird geöffnet und das Video spielt wie erwartet. Die anderen 50% der Zeit, aber das Video und die Vorschau ist weiß, und alles, was ich bekomme, ist der Ton. Dies wird normalerweise behoben, indem Sie ein anderes Video auswählen und dann zu meinem Video zurückkehren. Das Video spielt perfekt in der Kamera, es ist nur Instagram, das Probleme verursacht. Ist das ein Problem, das Instagram hat oder könnte ich meine Videos falsch exportieren?

Das sind meine AVAssetExportSession Einstellungen:

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, ich denke, dass wir die gleiche Wal Jagd sind. [Meine Frage] (http://stackoverflow.com/questions/39560386/avplayer-playback-fails-while-avassexportsession-is-active-as-of-ios-10) –

+1

Haben Sie eine Lösung? Ich dachte, dass die AVAssetExportSession aktiv sein musste, während ich die Wiedergabe startete, aber es scheint sogar zu passieren, nachdem es beendet ist. Dachte, wenn Sie es sofort nach dem Start abbrechen, scheint das Problem nicht zu passieren. –

+1

@AndresCanella Ich habe noch keine Lösung dafür gefunden. Da ich das Problem nur beim Exportieren auf Instagram gesehen habe, kann ich mich vielleicht an sie wenden, um zu sehen, ob das ein bekannter Bug ist oder nicht. Aber ja, es scheint definitiv, dass unsere Fragen denselben Ursprung haben. –

Antwort

2

gerade von Apple DTS gehört. Sie stimmen auch zu, dass dies auf einen Apple iOS Bug hinweist und forderten mich auf, es zu loggen.

Ich habe die Verwendung von AVAssetExportSession wie oben erwähnt ausgeschnitten und es löste mein Problem als eine Arbeit um. Das Problem scheint also bei dieser Methode zu liegen, die wahrscheinlich in der Instagram-Methode enthalten ist, die Sie verwenden.

So bis Apple behebt dieses oder Instagram baut eine Arbeit um, scheint es keine Lösung für dieses Problem zu sein ... Bummer

+1

Ich verstehe. Danke, dass du mich wissen lässt, was DTS dir gesagt hat, hoffe, dass das bald gelöst wird. –

+0

Jedes Update auf der Apple-Seite? – Sam

Verwandte Themen