Dado
Dado

Reputation: 1187

AVAssetWriterInput, impossible to choose video resolution?

It looks like no matter what AVVideoWidthKey, AVVideoHeightKey, AVVideoCleanApertureWidthKey, AVVideoCleanApertureHeightKey I choose, my video resolution will be either 320x240 or 480x360.

I'm trying to save a video at 480p and all my buffers are 640x480, my session is at AVCaptureSessionPreset640x480, everything is at 640x480 but still my output video is scaled down.

I'm using AVAssetWriterInputPixelBufferAdaptor and the CMSampleBufferRef that I've pass into it it's at 640x480.

I've looked all over Stack Overflow but I haven't found this issue yet being reported. :/

Upvotes: 1

Views: 6270

Answers (1)

Steve McFarlin
Steve McFarlin

Reputation: 3596

I use this setting all the time and it works. Here is a code sample.

self.compressionProperties = [[[NSMutableDictionary alloc] initWithObjectsAndKeys:
                               [NSNumber numberWithInt:params.bps], AVVideoAverageBitRateKey,
                               [NSNumber numberWithInt:params.keyFrameInterval],AVVideoMaxKeyFrameIntervalKey,
                               //videoCleanApertureSettings, AVVideoCleanApertureKey,
                               params.videoProfileLevel, AVVideoProfileLevelKey,
                               nil ] autorelease];

self.videoSettings = [[[NSMutableDictionary alloc] initWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey,
                       [NSNumber numberWithInt:params.outWidth], AVVideoWidthKey,
                       [NSNumber numberWithInt:params.outHeight], AVVideoHeightKey, 
                       self.compressionProperties, AVVideoCompressionPropertiesKey,
                       nil] autorelease];

...

wobj.writerInput = [[[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:self.videoSettings] autorelease];

Upvotes: 6

Related Questions