H.264 Camera Display Changing And Key Frames


Our application has groups of 4 cameras that are displayed sequentially moving around the facility perimeter and changing every 3-4 seconds. With H.264 encoding, it could take up to the key frame time (1 second for us) to get a full picture on the screen. Is there a standard solution to this problem such as streaming a secondary MJPEG stream for live view or forcing a key frame at the camera when selecting it for live viewing to allow apparently instantaneous changes?



Are you using a mainstream VMS to stream the views or is your application talking directly to the cameras?

Certainly if your cameras support simultaneous dual H.264 and MJPEG streaming (Most don't, those that do often cannot at their highest res/fps), that is an option, tho you would reduce some of the network bandwidth benefit of H.264.

Also, as i'm sure you are aware, you could modify the I-frame/ P-frame ratio(if the camera allows), to reduce latency, tho that also would impact network bandwidth as well as have storage implications.

If you are reading the cameras directly in your own application, are the tcp/udp connections persistent? Why not simply pre-buffer the video and then apply the last I-frame and roll foward the P-frames to bring you current at the time of the switch?


Mark, what is the overall frame rate of the camera? Who is the camera manufacturer? What is the VMS / client you are using to monitor this?

My recommendation would depend on knowing those 3 factors.

The application consists of multiple. independent sites (~35) with 250-400 cameras per site running Genetec (primarily Omnicast)and using a mix of primarily Panasonic, Axis, Sony and some Bosch. These are mostly vandal resistant fixed dome cameras with some PTZs and the previously mentioned perimeter cameras being fixed cameras in environmental enclosures (Canadian weather - so cold is the biggest problem). The I frame rate is limited by Genetec where it does not support sub-second key frame rates in the configuration console - hence 1 per second. It may be possible to configure the cameras and lock out the Genetec override. It may not be possible to configure the prebuffer given the quantity of cameras on line. We currently operate primarily in MJPEG and are moving to H.264. Currently camera configurations are 640x480 15fps MJPEG and moving to 800x600 or 720p 30fps H.264. Multi-megapixel cameras and higher than 720p resolutions are not attractive due to the wide range of lighting levels encountered.

The sequencing cameras account for ~50 of the cameras that cover the perimeter.


Are there overwhelming reasons for running Omnicast versus Security Center? I'm sure you've gone down this road before but since you say you are migrating to h.264 it maybe be a good time to look into it.

The video engine for h.264 seems to be more sophisticated in its handling of i and p frames as well as having overall improvements in smoothness. It also allows setting of sub-second i frame values. Its possible that it could solve your problem right out of the gate. Can or do you have a trial of it?

Apparently they are priced the same. Maybe someone can chime in re: license migration possibilities?

If not I would think Genetec should be able to provide a hotfix to Omnicast to allow sub-second values. Its most like a registry value and/or in a db config file table. You could try to hack it (not recommended) but its seems possible they would readily hotfix it or tell you how to modify the param. Tho I realise that changing the iframe interval is sub-optimal since

  1. You are still left with some latency
  2. Bandwidth savings are reduced proportionally to latency reduction

As for a way to 'force' an iframe, i'm not aware of a lightweight way to do this. H.264 streams are basically one way and when they need to be altered the vms simply requests a new one and then tears down the old. Tho in theory it could work to request a new stream each time, I doubt it would be even close to usable...

Lets see what John recommends before doing anything, as I am not fluent in Genetec...



Thanks for posting the question.

If I understand your question well, you want to be able to modify the key frame interval below 1 second to have multiple key frames per second. By default, this is the configuration you have in the UI, which indeed limits you a max of 1 key frame per second:

However, by changing the combo box selection from “seconds” to “images”, you can configure the product, for example, to have a key frame for every 30 frames which would result in two key frames per second. Note that this could dramatically tax your video devices and will impact the bandwidth/storage but it would address your need.

This is valid for both Omnicast and Security Center.

Also, note that both Omnicast and Security Center supports key frame on demand. This means that when a camera is dragged into a tile, the system will request a key frame to the camera to start decoding right away without having the wait for the next key frame.

Francis Lachance

Thank you Francis,

I believe that answers my concerns about switching through H.264 feeds and learning of a different Genetec feature!

Thanks, Mark...

Thank you Chris,

The reference to the Omnicast versus Secrutiy Centre is also useful. We have mostly Omnicast installed. The ability to roll backwards through H.264 on Security Centre is nice, but for us, the directory server failover capability is probably more important.

Sincerely, Mark...

No problem.

FYI, I saw this page now claiming directory failover for SC.


Thanks for that update.