Iphone сохраняет медленное видео с открытым фильтром gl

#iphone #opengl-es #video-capture #avcapturesession #glreadpixels

#iPhone #opengl-es #захват видео #avcapturesession #glreadpixels

Вопрос:

Я использую avcapturesession с предустановленным AVCaptureSessionPresetMedium для захвата видео, я применяю эффект к этому видео с помощью opengl с использованием шейдеров. Я использую assetWriter для записи видео в файл mp4. Проблема в том, что полученное видео получается медленным, особенно когда я добавляю аудиовыход.

Вот как работает мой код :

  1. In — (void)captureOutput: (AVCaptureOutput *) Функция captureOutput … Я применяю фильтр opengl к захваченным кадрам
  2. затем проверьте, является ли вывод captureout видео или аудио, если это видео, я использую glReadPixels для создания CVPixelBufferRef, который я отправляю в AVAssetWriterInputPixelBufferAdaptor для его записи
  3. если это аудио, я записываю непосредственно CMSampleBufferRef

Если кто-нибудь может сказать мне, что не так с моим подходом или какая часть должна замедлять видео в результате?

Комментарии:

1. Вы имеете в виду, что это медленно, поскольку программа работает слишком медленно, и вы отбрасываете кадры, или вы записываете каждый кадр, но конечное видео воспроизводится, например, со скоростью 1/2? Если первое, то запускали ли вы свою программу через Instruments?

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