Цитата:
Сообщение от Albert.****
А что бы не бежало у меня есть идея (не знаю можно ли сделать это) - при появлении пропусков кадров, для сохранения скорости потока забивать пропуски одинаковыми кадрами
|
Беда в том, что именно так сейчас и делается в 1.8.3.
Возникает дилема. Камера выдает определенное количество кадров, максимально сколько может, но не больше указанного нами значения.
Например, у нее есть режим 800*600*30.
Это значит, что камера при этом разрешении может выдать 30 кадров (в самых идеальных условиях).
Поэтому 1.8.3 выставляет именно это значение. Но процессор компа слаб и в настройках выставляется только 10 кадров в секунду, которые проц успевает пожать. Получается, что 20 кадров в секунду сыпятся с камеры просто так. Они расходуют ресурсы, вызывают копирование памяти и т.д. Но никак не используются.
Поэтому напрашивается решение - ограничить количество кадров камеры, чтобы не сыпались лишние кадры. Но тут еще 2 нестыковки.
Первая - хочется же писать максимально - днем 25, а вечером 5. Соответственно настройку придется менять. Вручную - не вопрос.
Автоматически? Тоже можно, но чтобы понять сколько камера может выдать в данный момент времени - ее нужно открыть с максимальным FPS и пару секунд подсчитывать средний FPS. Потом открыть еще раз в режиме который рассчитали. И по-хорошему это надо делать перед стартом каждого нового ролика. Двухсекундный замер приведет к тому, что мы потеряем пару секунд записи. А если в эти пару секунд произойдет ДТП? Будет обидно.
Вторая нестыковка - некоторые камеры (например та, которая в моем еее-пц), после открытия в 10FPS, выдает 5FPS, а при открытии в 30FPS, выдает 10FPS при одинаковой освещенности. Почему так происходит - ХЗ.
Драйвера или железо так работает - не знаю.
Я пока в раздумьях как решить все эти проблемы.
Универсальное решение сейчас использовано в 1.8.3. Камера открывается в максимальном режиме. В видеофайл пишется столько кадров, сколько указано. А если с камеры приходит недостаточно кадров, копируются старые кадры.
Но это решение жрет ресурсы....