RLAN> В структуре потока MJPEG есть номер каждого кадра?
Нет, но поскольку ты сам создаешь его, ты знаешь, к какому кадру привязано каждое сообщение ком-порта.
RLAN> Как я вычислю пропуск кадра? (а они бывают)
Смотри, насколько я прочитал API этих камер. Как нужно работать.
Отдельным потоком создается подключение к камере и ты начинаешь опрашивать камеру, по запросу камера кладет текущую картинку в заданную область памяти. На этом этапе, как я понял, пропусков кадровы быть не должно. Но вроде есть функция uEye.TimingVsyncCount.Get(out long s64Vsync, out long s64Fsync) которая дает номер текущего кадра и номер кадров вообще с момента запуска. По идее она должна позволять увидеть пропуски кадров, но повторюсь, на этом этапе их быть просто не должно.
Одновременно другой поток получает данные с ком-порта. Как только появился новый кадр, ты берешь его номер и к нему прикрепляешь сообщение. Хранишь пока в памяти.
А кадр с памяти ты можешь или сохранить на диск или передать его другой функции API камеры, которая пишет AVI по этим кадрам. Вот тут возможны пропуски кадров, если компрессор не будет справляться, но это тебе сразу выдаст ошибку при добавлении кадра и вот тут ты берешь сохраненный номер кадра и сообщение ком-порта и сохраняешь в файл, а если был пропуск кадра, то вместо номера кадра указываешь какую-нибудь метку что этот кадр в AVI пропущен.
Весь процесс записи видео описан очень хорошо, вот его краткий конспект
By creating an account with our store, you will be able to move through the checkout process faster, store multiple shipping addresses, view and track your orders in your account and more.
If you have an account with us, please log in.
Checking "Remember Me" will let you access your shopping cart on this computer when you are logged out
* Required Fields
IDS Imaging Development Systems GmbH, Dimbacher Straße 6-8, 74182 Obersulm, Germany Phone: +49 - 7134 - 96196 - 0, Fax: +49 - 7134 - 96196 - 99, info
ids-imaging.com
// en.ids-imaging.com