Я пишу простое приложение, похожее на видео-мессенджер, и поэтому мне нужно получить кадры некоторого компромиссного размера, чтобы иметь возможность вписаться в имеющуюся полосу пропускания и при этом сохранить захваченное изображение без искажений.
Для получения фреймов я использую класс QTCaptureVideoPreviewOutput и успешно получаю фреймы в обратном вызове didOutputVideoFrame.(Мне нужны необработанные кадры - в основном потому, что я использую собственный кодировщик, поэтому я просто хотел бы получить «сырые растровые изображения»).
Проблема в том, что для этих новых камер iSight я получаю буквально огромные кадры.
К счастью, эти классы для захвата необработанных кадров (QTCaptureVideoPreviewOutput) предоставляют метод setPixelBufferAttributes, который позволяет указать, какой тип кадров я хотел бы получить.Если мне посчастливится угадать какой-либо размер кадра, который поддерживает камера, я могу указать его, и QTKit переключит камеру в указанный режим.Если мне не повезло - я получаю размытое изображение (потому что оно было растянуто / сжато) и, скорее всего, непропорционально.
Я искал через lists.apple.com и stackoverflow.com,Ответ таков: «В настоящее время Apple не предоставляет функциональные возможности для получения исходных размеров кадра камеры».Ну, я ничего не могу с этим поделать.
Может быть, я должен предоставить в настройках наиболее распространенные размеры кадров, и пользователь должен попробовать их, чтобы увидеть, что ему подходит?Но каковы эти общие размеры кадра?Где я могу получить список размеров кадра, которые обычно генерируют камеры UVC?
Для тестирования моего приложения я использую UVC-совместимую камеру, но не iSight.Я предполагаю, что не каждый пользователь также использует iSight, и я уверен, что даже между разными моделями камеры iSight имеют разные размеры кадра.
Или, может быть, мне следует переключить камеру в режим по умолчанию, сгенерировать несколько кадров,посмотрите, какие размеры он генерирует, и, по крайней мере, у меня будут некоторые пропорции?Это выглядит как настоящий взлом, и не кажется естественным.И изображение, скорее всего, снова будет размыто.
Не могли бы вы помочь мне, как вы справились с этой проблемой?Я уверен, что я не первый, кто сталкивается с этим.Какой подход вы бы выбрали?Спасибо, Джеймс