2014-10-20 31 views
0

我與AVAssetWriterInput工作,但sourceFormatHint參數是給這樣的警告:與AVAssetWriterInput參數有問題sourceFormatHint

不兼容的整數指針轉換髮送「詮釋」到參數類型「CMFormatDescriptionRef」的 (又名「常量結構 opaqueCMFormatDescription *')

這裏是代碼:

AVAssetWriterInput* videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:settings sourceFormatHint:kCMMediaType_Video]; 
videoWriterInput.expectsMediaDataInRealTime = YES; 
videoWriterInput.transform = videoTrack.preferredTransform; 
AVAssetWriter *videoWriter = [[AVAssetWriter alloc] initWithURL:outputURL fileType:@"public.mpeg-4" error:nil]; 
[videoWriter addInput:videoWriterInput]; 

我應該通過哪些參數sourceFormatHint

回答

0

你好參見下面的設置它的工作對我來說.... :)

-(BOOL) setUpWriter { 
NSError* error = nil; 
videoWriter = [[AVAssetWriter alloc] initWithURL:[self tempFileURL] fileType:AVFileTypeQuickTimeMovie error:&error]; 
NSParameterAssert(videoWriter); 

//Configure video 
NSDictionary* videoCompressionProps = [NSDictionary dictionaryWithObjectsAndKeys: 
             [NSNumber numberWithDouble:1024*1024], AVVideoAverageBitRateKey, 
             nil ]; 




NSDictionary* videoSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
           AVVideoCodecH264, AVVideoCodecKey, 
           [NSNumber numberWithInt:320.0], AVVideoWidthKey, 
           [NSNumber numberWithInt:568.0], AVVideoHeightKey, 
           videoCompressionProps, AVVideoCompressionPropertiesKey, 
           nil]; 
videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings]; 
// videoWriterInput =[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings sourceFormatHint:kCMMediaType_Video]; 

NSParameterAssert(videoWriterInput); 
videoWriterInput.expectsMediaDataInRealTime = YES; 
NSDictionary* bufferAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, nil]; 

avAdaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:videoWriterInput sourcePixelBufferAttributes:bufferAttributes] ; 

//add input 
[videoWriter addInput:videoWriterInput]; 
[videoWriter startWriting]; 
[videoWriter startSessionAtSourceTime:CMTimeMake(0, 1000)]; 

return YES; 
}