Итак, Брэд Ларсон потрясающий. Я использую его библиотеку GPUImage, так как он оптимизировал CGContextCreateImage для вывода видео, чтобы вместо этого работать прямо в OpenGL. Затем он переписал его еще более удивительно, и половина вопросов устарела. Другая половина имеет новые обратные вызовы, Like this question, но для жизни меня я не могу получить обратный вызов видеокадров, чтобы он не был ник. (функции CMSampleBuffer для CIImage)Возьмите изображение из willOutputSampleBuffer или связанного?
Я знаю, что мне нужно «пометить следующий кадр», который будет храниться в памяти, благодаря его блогу. Я также знаю, что я его обрабатываю (но GPUImageVideo тоже делает это), затем я берусь из фреймбуфера. Все еще ноль.
Команда захвата, которая должна автоматически фильтровать ее в CGImage, из функции processImageUpToFilter из CGImagePicture, похоже, является тем, что я хочу, и я видел, как это упоминалось, но я теряюсь относительно того, как подключить вывод к его frameBuffer.
Или использовать GPUImageRawDataOutput и как подключиться? Я копировал и вставлял, редактировал, экспериментировал, но не уверен, что это просто факт, что я не знаю, что openGL достаточно, чтобы подключить нужный материал или?
Любая помощь приветствуется. Я бы не стал спрашивать, потому что здесь так много связанных вопросов, но я использую их и все равно получаю нуль на выходе.
Вот моя текущая попытка:
func willOutputSampleBuffer(sampleBuffer: CMSampleBuffer!) {
gpuImageVideoCamera.useNextFrameForImageCapture()
//Next line seems like a waste, as this func is called in GPUImageVideoCamera already.
gpuImageVideoCamera.processVideoSampleBuffer(sampleBuffer);
if let image = gpuImageVideoCamera.imageFromCurrentFramebuffer()
{
//it's nil
}
}
Обновление: У меня сейчас это работает, но что-то странно. Если я включу использование transformFilterNextFrameForImageCap, он замедляет работу камеры, окно предварительного просмотра получает около 0,2 кадра в секунду, но оно закрывает изображение в вызове willOutput еще с помощью transformFilter.imageFromCurrentFramebuffer. Использование видеоКамераNext, я не получил работу –