AVAssetWriter не работает в настройках вывода с разрешением 720p при 60 кадрах в секунду

У меня есть это приложение для камеры, которое я разрабатываю. В какой-то момент я пытаюсь записать видео, поэтому я создаю assetsWriter, и у меня есть эти строки:

  CGFloat videoFrameWidth = size.width;
  CGFloat videoFrameHeight  = size.height;

  NSUInteger numPixels = videoFrameWidth * videoFrameHeight;
  NSUInteger bitsPerSecond;

  NSUInteger bitsPerPixel = 11.4; // This bitrate matches the quality produced by AVCaptureSessionPresetHigh... this was copied from a code from Apple

  bitsPerSecond = numPixels * bitsPerPixel;

  NSDictionary *videoCompressionSettings = @{AVVideoCodecKey                  : AVVideoCodecH264,
                                             AVVideoWidthKey                  : @(videoFrameWidth),
                                             AVVideoHeightKey                 : @(videoFrameHeight),
                                             AVVideoCompressionPropertiesKey  : @{ AVVideoAverageBitRateKey      : @(bitsPerSecond),
                                                                                   AVVideoMaxKeyFrameIntervalKey : @(fps)}
                                             };

  if ([_assetWriter canApplyOutputSettings:videoCompressionSettings forMediaType:AVMediaTypeVideo])

если я записываю в формате 1080p при 30 кадрах в секунду, этот метод работает отлично, но если я переключаюсь на 720p при 60 кадрах в секунду, эта последняя строка не работает.


person Duck    schedule 11.04.2017    source источник
comment
что произойдет, если вы удалите ключ AVVideoMaxKeyFrameIntervalKey? Я думаю, что вы говорите 1 ключевой кадр каждые 60 кадров с этим.   -  person Rhythmic Fistman    schedule 11.04.2017
comment
то, что вы говорите, имеет смысл... Я попробую это и вернусь сюда. Все эти вещи настолько плохо документированы, что никогда не угадаешь. Я желаю, чтобы Apple уволила сатану, который сегодня отвечает за создание их инструментов разработки и документации...   -  person Duck    schedule 12.04.2017
comment
удаление этого ключа помогло, но теперь видео создается, но всегда со скоростью 30 кадров в секунду, даже если я снимаю со скоростью 60 или выше кадров в секунду ...   -  person Duck    schedule 12.04.2017
comment
Можете ли вы показать еще немного кода? В идеале, как вы захватываете и записываете кадры.   -  person Rhythmic Fistman    schedule 12.04.2017
comment
Пожалуйста, сделайте свой первый комментарий ответом, чтобы я мог принять. Чтобы решить другую проблему, я создал другой вопрос поскольку вы просили показать больше кода, а задействованный код огромен, я спрашиваю вас, что конкретно вы хотите увидеть... пожалуйста, используйте другой вопрос, чтобы ответить... спасибо и не забудьте сделать свой прокомментируйте ответ на это... спасибо   -  person Duck    schedule 12.04.2017
comment
Хорошо, готово - теперь новый вопрос.   -  person Rhythmic Fistman    schedule 12.04.2017


Ответы (1)


Что произойдет, если вы удалите ключ AVVideoMaxKeyFrameIntervalKey? Я думаю, вы говорите 1 ключевой кадр каждые 60 кадров с этим.

person Rhythmic Fistman    schedule 12.04.2017