Dato che non è ancora possibile evitare la compressione con UIImagePickerController, ho voluto includere alcune idee su come è possibile creare il proprio raccoglitore di immagini che eviterà la compressione.
Ciò consentirà l'accesso ai file video grezzi:
iOS 8
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:nil];
for (PHAsset *asset in assetsFetchResult) {
PHVideoRequestOptions *videoRequestOptions = [[PHVideoRequestOptions alloc] init];
videoRequestOptions.version = PHVideoRequestOptionsVersionOriginal;
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:videoRequestOptions resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
// the AVAsset object represents the original video file
}];
}
consultare la documentazione per l'accesso PhotoKit collezioni (momenti) e altre opzioni.
Ecco un'applicazione di esempio da Apple utilizzando PhotoKit che potrebbe essere modificato per essere una foto raccoglitrice: https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html
Ecco una libreria fotografica selettore su GitHub che utilizza PhotoKit che sembra essere molto promettente in quanto ti dà gli oggetti PHAsset per tutti i selezionati immagini/video: https://github.com/guillermomuntaner/GMImagePicker
iOS 7 e sotto
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
// If you want, you can filter just pictures or videos
// I just need videos so I do this:
[group setAssetsFilter:[ALAssetsFilter allVideos]];
[group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){
if (asset){
// You can now add this ALAsset in your own video picker.
// Note that you can only access the ALAsset as long as
// you maintain a reference to the ALAssetsLibrary
// Or if you want to process the video, you can create an AVAsset:
NSURL *url = asset.defaultRepresentation.url;
AVAsset *videoAsset = [AVAsset assetWithURL:url];
}
}];
}
} failureBlock:^(NSError *error) {
NSLog(@"error enumerating AssetLibrary groups %@\n", error);
}];
ancora non hanno trovato una soluzione a questo. Qualcuno ha qualche idea? – Avalanchis
Dai un'occhiata alle mie risposte qui sotto.Non sembra che gli sviluppatori possano influenzare la compressione. – memmons
Avalanchis - questa risposta è stata 2 anni fa. È possibile ottenere un accordo? – memmons