Причина, по которой вы должны прочитать поток, состоит в том, что H.264 имеет несколько видов кадров (см. https://en.wikipedia.org/wiki/Video_compression_picture_types), а кадры P и B требуют декодирования контекста. Только I-кадры (также известные как ключевыекадры) могут быть декодированы автономно.
Если вы хотите читать действительно произвольные кадры, вы можете анализировать (не декодировать) поток и сохранять все, начиная с последнего I-кадра. Когда ваш триггер приходит, вы декодируете поток, так какпоследний I-кадр и до текущей точки.
Если вам не нужно быть очень точным, вы можете просто сохранить последний I-кадр и декодировать его по требованию. Это будет очень быстро, но этоозначает, что вы можете получить изображение не в то время.
Наконец, как часто появляются эти ключевые кадры? Это зависит от источника. Например, веб-камера C920 генерирует их примерно каждые 5 секунд по умолчанию, но этот интервал можетбыть изменено с 1 до 30 секунд (я думаю, это было некоторое время назад)