To wtedy zapominasz o ESP32 i takich najtańszych przetwornikach.
TLDR - kup normalną kamerę, która spełnia takie wymagania, z g… bata nie ukręcisz 
OV2640 (to konstrukcja mniej więcej sprzed 15 lat, a nawet raczej starsza) jest sam z siebie w stanie wydusić nawet 60fps, ale w rozdzielczości CIF (i nie wiem czy w jpegu), swoją drogą ten przetwornik ma nieco ponad 1600x1200 (1632x1232), więc UXGA to jest maksymalna standardowa rozdzielczość z jaką może pracować i “full-HD” jest nieosiągalne (no bądźmy szczerzy - daje się uzyskać nieco “oszukane” full-HD z użyciem pewnego triku znanego i stosowanego w telewizji i przede wszystkim w kinie od dziesiątków lat - stosując soczewkę cylindryczną przed przetwornikiem, ale wtedy trzeba zająć się tym zniekształconym obrazkiem programowo, a w zabawkach nikt nie będzie się szarpał na specjalizowaną optykę - taniej jest wyprodukować przetwornik o wyższej rozdzielczości i korzystać tylko z jakiegoś fragmentu jego powierzchni).
Jakkolwiek trzeba mieć datasheet przed oczami (warto poczytać), niestety przy takiej rozdzielczości ESP32 może będzie w stanie wydusić z siebie może coś w okolicach 1fps góra kilka fps.
OV2640_04937_datasheet.zip (446,6 KB)
Jeśli chcesz jakieś DIY na starawych przetwornikach, to musisz mieć do obsługi kamery jakiś bardziej prawdziwy komputer, a nie próbować to opędzić mikrokontrolerem (jakiś SBC wystarczy, szczególnie, że będzie miał dedykowane złącza CSI - uwaga ze złączem ZIF w innym standardzie niż dla ESP, ale złącza w RPi stanowią standard sam w sobie - są 2 rozmiary - w zero jest mniejszy, w dużych RPi większy, inne SBC ze złączem CSI też mają ZIF zgodny z jednym z tych stosowanych w RPi, jeśli chodzi o niedrogą zabawę, to RPi zero 2W jest jakimś wyznacznikiem minimum na dziś - komuś pomagałem w odpaleniu projektu na uczelnię na bazie RPi3 i całkiem spasionej kamery CSI na IMX477 jakkolwiek nie pamiętam jakie parametry dało się z tego wycisnąć przy streamowaniu - ideą i tak był zapis lokalny, ale nie wiem czy na tanich przetwornikach można uzyskać takie parametry o jakich marzysz - po długich poszukiwaniach znalazłem jakieś pliki z dawnych eksperymentów z wykrywaniem ruchu i tam miałem obrazek 1440x960pix przy 8-10fps bodajże na OV5647 - ten przetwornik w specyfikacji spełnia wymagania “full-HD”@30fps, ale trzeba dysponować jeszcze mocą obliczeniową aby to obsłużyć, wyjąłem z szuflady RPi4 z taką kamerką i 25fps/30fps jest osiągalne dla HD720p = 1280x720 i kompresja do h264 zużywa połowę procka maliny, dla FullHD to już koło 10fps a powyżej to zupełna lipa, oczywiście można porzeźbić w kwestii kodeków, bo tu użyłem kompresji programowej, mając czas na zabawę prawdopodobnie można to zoptymalizować, mnie 720p zadowalało, bo ten przetwornik nie jest ósmym cudem świata, a optyka też nie jest wybitna).
Warto zauważyć, że HD1080p wymaga (przyjmując uproszczenie w postaci liniowej zależności od ilości makrobloków) 2,25 razy więcej mocy obliczeniowej do kompresji od HD720p więc procka (by) mi brakło, oczywiście z tego powodu jest redukowany klatkaż.
PS Ciekawostka OV2640 jest w stanie “wypluć” obrazek 30x40pix, ale tak niska rozdzielczość (i kilka innych zbliżonych) nie jest już obsługiwana w sterowniku dla ESP32.