2015-09-20 7 views
2

Я пытаюсь использовать AVAssetWriterInput, чтобы обрезать видео, которое я прочитал в виде скринкаста моего приложения. Вот моя текущая конфигурация.AVAssetWriterInput в настоящее время не поддерживает AVVideoScalingModeFit - Ошибка IOS

NSDictionary *videoCleanApertureSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
              [NSNumber numberWithInt:320], AVVideoCleanApertureWidthKey, 
              [NSNumber numberWithInt:480], AVVideoCleanApertureHeightKey, 
              [NSNumber numberWithInt:10], AVVideoCleanApertureHorizontalOffsetKey, 
              [NSNumber numberWithInt:10], AVVideoCleanApertureVerticalOffsetKey, 
              nil]; 


NSDictionary *videoAspectRatioSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
              [NSNumber numberWithInt:3], AVVideoPixelAspectRatioHorizontalSpacingKey, 
              [NSNumber numberWithInt:3],AVVideoPixelAspectRatioVerticalSpacingKey, 
              nil]; 

NSDictionary *codecSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
           [NSNumber numberWithInt:960000], AVVideoAverageBitRateKey, 
           [NSNumber numberWithInt:1],AVVideoMaxKeyFrameIntervalKey, 
           videoCleanApertureSettings, AVVideoCleanApertureKey, 
           videoAspectRatioSettings, AVVideoPixelAspectRatioKey, 
           AVVideoProfileLevelH264BaselineAutoLevel, AVVideoProfileLevelKey, 
           nil]; 

NSDictionary *videoSettings = @{AVVideoCodecKey:AVVideoCodecH264, 
           AVVideoCompressionPropertiesKey:codecSettings, 
           AVVideoScalingModeKey:AVVideoScalingModeResizeAspectFill, 
           AVVideoWidthKey:[NSNumber numberWithInt:320], 
           AVVideoHeightKey:[NSNumber numberWithInt:480]}; 

_videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings]; 

Я получаю следующее сообщение об ошибке: «AVAssetWriterInput не поддерживает AVVideoScalingModeFit»

Это общая ошибка для любого, используя эту библиотеку, но я не могу найти реальное решение. Я просто вижу, что люди говорят: «Я все понял», не объяснив это. Проблема определенно связана с этой строкой: «AVVideoScalingModeKey: AVVideoScalingModeResizeAspectFill», которая сообщает AVAssetWriter обрезать видео и поддерживать соотношение сторон. Кто-нибудь знает решение этого?

ответ

0

Не существует «решения для этого» как такового. Это просто не поддерживается. Вам нужно будет масштабировать видеокадры самостоятельно, используя Core Image или VTPixelTransferSession или что-то подходящее для вашего конвейера.