Я использовал образец Android NDK Camera , и с его помощью можно читать кадры с форматом AIMAGE_FORMAT_YUV_420_888
, используя yuvreader_
внутри DrawFrame при 30 Гц,Я подтвердил, что 30 Гц достигается путем записи временной метки в каждом изображении и ее печати.Я использую Samsung Galaxy S9.
Теперь я пытался получить изображения JPEG вместо изображений YUV также с частотой 30 Гц, но пока не удалось, и мне было интересно, может ли кто-нибудь помочь.
Из того, что я понял, сеанс захвата в этом примере создает запрос как для «предварительного просмотра», так и для «захвата по-прежнему», где yuv используется для предварительного просмотра, а jpeg используется для захвата по-прежнему.Что я сделал, так это установил jpgReader_
в качестве предварительного просмотра, а затем проверил метку времени кадров, захваченных в ImageCallback здесь (я прокомментировал шаг записи в файл,и просто вызвал AImage_delete (image) для очистки буфера вместо этого).Однако в результате я получаю кадры с интервалами 33, 66, 99 и 133 мс, которые распределены достаточно равномерно, поэтому многие кадры часто пропускаются.
Есть идеи, в чем может быть проблема?