#iphone #opengl-es #video-capture #avcapturesession #glreadpixels
#iPhone #opengl-es #захват видео #avcapturesession #glreadpixels
Вопрос:
Я использую avcapturesession с предустановленным AVCaptureSessionPresetMedium для захвата видео, я применяю эффект к этому видео с помощью opengl с использованием шейдеров. Я использую assetWriter для записи видео в файл mp4. Проблема в том, что полученное видео получается медленным, особенно когда я добавляю аудиовыход.
Вот как работает мой код :
- In — (void)captureOutput: (AVCaptureOutput *) Функция captureOutput … Я применяю фильтр opengl к захваченным кадрам
- затем проверьте, является ли вывод captureout видео или аудио, если это видео, я использую glReadPixels для создания CVPixelBufferRef, который я отправляю в AVAssetWriterInputPixelBufferAdaptor для его записи
- если это аудио, я записываю непосредственно CMSampleBufferRef
Если кто-нибудь может сказать мне, что не так с моим подходом или какая часть должна замедлять видео в результате?
Комментарии:
1. Вы имеете в виду, что это медленно, поскольку программа работает слишком медленно, и вы отбрасываете кадры, или вы записываете каждый кадр, но конечное видео воспроизводится, например, со скоростью 1/2? Если первое, то запускали ли вы свою программу через Instruments?
2. Проблема в том, что когда я записываю аудио вместе с видео, мне кажется, что я отбрасываю кадры. Потому что, когда я снимаю только видео и сохраняю его без звука, я получаю хорошую скорость.