This camera indeed works with the M5Stack, and is indeed very easy to hook up. This post is to document what I did.
Simply buy the cam at the link supplied and hook it up with the pin-socket-wires that come with the camera as follows:
Then clone https://github.com/ArduCAM/ArduCAM_ESP32S_UNO and copy the ArduCAM and ESP32WebServer libraries to your Arduino/libraries directory, add the client or AP data to the example script from the github (ArduCAM_ESP32S_UNO/libraries/ArduCAM/examples/ESP32/ArduCAM_ESP32_Capture/ArduCAM_ESP32_Capture.ino). Also make sure you uncomment #define OV2640_CAM and #define OV2640_MINI_2MP in the memorysaver.h file in the Arducam library dir, run the script and a webcam webserver works. (Surf to <ip>/stream or <ip>/capture).
I tried PlatformIO and didn't like it, maybe I should have tried longer. But if you're making something to be this easy to use, the Arduino IDE is where the users are, so I would always create for it as the primary way for people to use it.
I know the JPGs take up space in flash (but 1 byte per byte, not more than they need, right?) I'd also like to know what the space in the compiled image is used for, can you also list that? There were some weird jumps in how big the image got while I was developing.