I don't have experience with video doorbells, but a pattern I use to find IoT devices is look at the Home Assistant integrations[1] for moderately open APIs, then drill down into each product to find one with "Local Polling" or "Local Push" for the classification, which means you can communicate with the device over LAN instead of only via cloud. More on that here[2]. Currently the only listed doorbell with a local option is DoorBird[3]. Note it's not exhaustive as I know there's at least one product I have that could be Local Polling but the current implementation is Cloud Polling.
[1]: https://www.home-assistant.io/integrations/#doorbell
[2]: https://www.home-assistant.io/blog/2016/02/12/classifying-th...
[3]: https://www.home-assistant.io/integrations/doorbird/