For those who are finding this thread, here's what we know so far:
There was an issue with 1.33.14 that has been reportedly fixed in 1.33.14. https://github.com/ZoneMinder/zoneminder/issues/2682 https://github.com/ZoneMinder/zoneminder/issues/2682
That post suggested increasing "Options->System->WATCH_MAX_DELAY". I've done that, restarted Zoneminder and the same error messages persist (for me, it's "ImageBufferCount 20 is too small. Needs to be at least 31. Either increase it or decrease time between keyframes")
The logs have the source file and line number which produced the error (HUGE thank you to whomever decided to do that!), so I looked at zz_ffmpeg_camera.cpp:941 in the master branch. That is using monitor->GetImageBufferCount() which lives in a .h file, oddly. In zm_monitor.h we see that it just maps to image_buffer_count. This looks like it's being set in zm_monitor.cpp:2150 using atoi(dbrow[col]). There's a helpful comment just above that function which confirms that this data is, in fact, coming from the Monitor table of the database.
Logging into the database, we find that the Monitor table has a field called ImageBufferCount and in my case, it is, in fact set to 20 for each of my cameras. I grepped the source code to see where this field was set, but came up empty handed. Fortunately, after poking around in the camera settings it was obvious: Edit Camera -> Buffers -> Image Buffer Size (frames). I changed it there for each of my cameras, checked the database, and sure enough, it was updated in the Monitor table.
Doing so caused errors to go away. It also caused /dev/shm to jump from 48% to 74%. This increase perfectly matches the ratio of frames I'm holding, so this is the expected increase. You can use this same formula to predict how much additional memory you'll need if you want to increase the buffer, add cameras, and so forth.
If you don't have enough memory, the only other option is to increase keyframes sent by the camera. If your camera doesn't have that option (mine doesn't as far as I can tell), then, as knight-of-ni said, you just need more memory. That's it. There's no way around this.
Hopefully this information will help BassT in finding the Image Buffer Size setting, and it might help others figure out how to trace through the code to find answers to future questions. For the record, if you're wondering if I only found the answer because I was trying to write up the places I looked for this post... yes. I tried to find it earlier and apparently took a wrong turn somewhere, but as soon as I try to explain it to someone else... the answers just become obvious.
Best of luck.