Пример камеры Android NDK JPEG с частотой 30 Гц - PullRequest
0 голосов
/ 08 мая 2019

Я использовал образец 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 мс, которые распределены достаточно равномерно, поэтому многие кадры часто пропускаются.

Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 09 мая 2019

Многие устройства с камерой не могут воспроизводить изображения с разрешением 30 jpeg в секунду.Вот почему API камеры явно устанавливает формат YUV (или частный) для предварительного просмотра или видео.Немногие устройства способны создавать 30 JPEG в секунду.Вот почему в типичном сеансе видеозаписи используются кодеры h246 или vp8.

...