QTKit PAL Mode - PullRequest
       16

QTKit PAL Mode

2 голосов
/ 23 апреля 2009

Я использовал пример MyRecorder от QTKit, он записывает все, но у меня проблема в том, что моя камера PAL и разрешение кодирования H264 для PAL и NTSC различно. PAL - 724x568, а NTSC - 724x480.

Когда я выбираю профиль QT для H264High, он по умолчанию занимает только выходной файл с разрешением 724x480 NTSC, но моя камера имеет разрешение 724x568, поэтому в конечном результате между движущимися объектами имеется множество нежелательных горизонтальных линий.

Я знаю, что проблема заключается только в настройках разрешения, но QTKit так тесно закодирован, что нет настроек для изменения каких-либо параметров кодера.

Однако Apple рекомендует использовать только QTKit вместо более раннего подхода для захвата последовательности, но у нашей большой клиентской базы будут только камеры PAL, и нам нужно какое-то решение для разрешения PAL. Кто-нибудь может направить нас?

1 Ответ

2 голосов
/ 23 апреля 2009

Не похоже, что это простой способ сделать это с QTKit на данный момент.

Используя только QTKit, у вас есть несколько вариантов:

  1. То, что вы могли бы сделать, - это просто передать данные с вашей камеры в фильмы Quicktime, используя QTCompressionOptionsLosslessAnimationVideo, а затем преобразовать файл в H.264 с разрешением, которое вы хотите, используя класс QTMovie. Эта опция занимает много места на диске, но довольно проста.

  2. Используйте QTCaptureDecompressedVideoOutput вместо QTCaptureMovieFileOutput, и когда вы получаете вызов outputVideoFrame: withSampleBuffer: fromConnection: , буферизуйте видеокадры в поточной безопасной очереди. Затем во вторичном потоке вытяните из этой очереди и добавьте фрейм в QTMovie, который вы настроили для кодирования H.264 с вашим разрешением PAL.

Подход 2 сэкономит вам место на диске, но это немного больше работы, и вам придется беспокоиться о проблемах с многопоточностью, но до тех пор, пока нам не станет доступно больше опций в классе QTCaptureMovieFileOutput, который является лучшим, что вы можете сделать.

...