For maximum compatibility with third-party software, take a camera that transmits RTSP stream in H.264 format (aka MPEG-4 Part 10, aka AVC).
This stream can be simply translated "as is" or output to, for example, the HLS format. What is important, the HLS format (and similar ones) can be output without re-encoding the stream, but simply with its repacking, which is significantly less resource-intensive compared to full-time re-coding.
It will be very convenient if the camera can simultaneously transmit several streams with different encoding parameters . This is useful, for example, in situations where one stream is written to the archive of long-term storage, the second is used for low-resolution real-time previews, the third, of maximum quality, is used for detailed viewing of the image in real time.
Of course, you can take a camera that gives out only one stream (maximum quality for a camera), and recode it on the fly to any number of streams with different parameters, however, it should be noted that real-time encoding of a video stream is very resource-intensive (in terms of CPU time). ) the process, so that in the case of multiple cameras, it will be necessary to allocate separate powers only for stream recoding.