Como todavía no hay manera de evitar la compresión con UIImagePickerController, quería incluir algunas ideas de cómo puede crear su propio selector de imágenes que evitará la compresión.
Esto permitirá el acceso a los archivos de vídeo primas:
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
}];
}
vistazo a la documentación PhotoKit para acceder a colecciones (momentos) y otras opciones.
Aquí es una aplicación de ejemplo de Apple utilizando PhotoKit que podría ser modificado para que sea una foto selector: https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html
Aquí es una biblioteca de fotos selector en GitHub que utiliza PhotoKit que parece prometedor, ya que le da a los objetos PHAsset para todas las imágenes/vídeos seleccionados: https://github.com/guillermomuntaner/GMImagePicker
iOS 7 y por debajo
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);
}];
Aún no han encontrado una solución a esto. ¿Alguien tiene alguna idea? – Avalanchis
Eche un vistazo a mis respuestas a continuación.No parece que los desarrolladores puedan afectar la compresión. – memmons
Avalanchis - esto fue respondido hace 2 años. Posible obtener un aceptar? – memmons