GPUImageMovieWriter y avfiletypempeg4 tipo de file

Antes que nada, me gustaría felicitar a Brad por el increíble trabajo en GPUImage.

Estoy intentando aplicar una rotation a un file de video dado y get un file mpeg4 (AVFileTypeMPEG4) como salida.

Al hacer esto, obtengo el siguiente post:

* – [AVAssetWriterInput appendSampleBuffer:] La memory intermedia de input debe estar en un formatting sin comprimir cuando OutputSettings no es nula

Este problema se produce al utilizar el siguiente método init de GPUImageMovieWriter con el tipo de file establecido en AVFileTypeMPEG4:

- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSMutableDictionary *)outputSettings; 

Sin embargo, funciona para el otro método init que de hecho genera película de time rápido (AVFileTypeQuickTimeMovie está configurado de manera pnetworkingeterminada).

 - (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; 

Por favor, ¿alguien me puede decir si GPUImageWriter es capaz a partir de ahora de producir el file de película mpeg4?

Después de muchas investigaciones e bashs, puedes ver a continuación uno de los varios códigos que hice.

 movieFile = [[GPUImageMovie alloc] initWithURL:inputUrl]; movieFilter = [[GPUImageBrightnessFilter alloc] init]; [movieFilter setInputRotation:videoRotationMode atIndex:0]; [movieFile addTarget:movieFilter]; unlink([[outputUrl path] UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie NSMutableDictionary *videoSettings = [[NSMutableDictionary alloc] init];; [videoSettings setObject:AVVideoCodecH264 forKey:AVVideoCodecKey]; [videoSettings setObject:[NSNumber numberWithInteger:width] forKey:AVVideoWidthKey]; [videoSettings setObject:[NSNumber numberWithInteger:height] forKey:AVVideoHeightKey]; AudioChannelLayout channelLayout; memset(&channelLayout, 0, sizeof(AudioChannelLayout)); channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; NSDictionary *audioSettings = [NSDictionary dictionaryWithObjectsAndKeys: [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, [ NSNumber numberWithInt: 2 ], AVNumberOfChannelsKey, [ NSNumber numberWithFloat: 16000.0 ], AVSampleRateKey, [ NSData dataWithBytes:&channelLayout length: sizeof( AudioChannelLayout ) ], AVChannelLayoutKey, [ NSNumber numberWithInt: 32000 ], AVEncoderBitRateKey, nil]; // Will create quicktime file movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:outputUrl size:CGSizeMake(640.0, 480.0) fileType:AVFileTypeMPEG4 outputSettings:videoSettings]; [movieFilter addTarget:movieWriter]; // Configure this for video from the movie file, where we want to preserve all video frames and audio samples movieWriter.shouldPassthroughAudio = NO; // default YES [movieWriter setHasAudioTrack:TRUE audioSettings:audioSettings]; movieFile.audioEncodingTarget = movieWriter; [movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter]; [movieWriter setDelegate:self]; [movieWriter startRecording]; [movieFile startProcessing]; 

Gracias por adelantado

PS: estoy usando iOS6