Hi, I'm recently working for ESP32 camera projects, So I can implement your requirements very soon.
1&2 have no problem.
3rd requirement has one issue. ESP32 cannot do processing of video codecs, so for video streaming, we have to send sequential JPEG image. I already implemented such streaming-like feature in HTTP, WebSocket, GSM, etc. Anyway, the final result will be similar as video streaming, though the fps is not so good as real streaming. It's the limit of ESP32 camera module. But I think its acceptable performance for your project.
I have developed such projects in both PlatformIO and ESP-IDF. I'll use your preferred environment.
Kind regards,
Sai,