това е първата ми публикация тук и се надявам да намеря малко помощ
Работя с вграден Linux на платка samsung ok6410 и ov9650 cmos камера
Трябва да заснема видеоклип и да го запазя на SD-карта
Искам да използвам кръгъл буфер, който улавя видео и когато е пълен, позволявам на новите данни да презапишат старите.
Има флаг, който при вдигане продължава 10 секунди, след което спира. Видеото, записано на sd-карта, трябва да съдържа 10 секунди преди вдигане на флага и 10 секунди след вдигане.
Прочетох примера за заснемане на официалния сайт на v4l2 API спецификации тук
http://free-electrons.com/kerneldoc/latest/video4linux/API.html
но има някои точки, които не мога да разбера или не знам дали ги разбирам правилно
В този пример има 4 буфера за кадри, всеки буфер може да побере един кадър. Това вярно ли е?
Има променлива (frame_count), която се инициализира на 70, това означава ли, че като завърша тази програма, ще имам видеоклип, който съдържа 70 кадъра?
Какво правят fns (основен цикъл) и (рамка за четене)? Знам какво трябва да направят, но не мога да разбера писмения код, циклите... и т.н
Как мога да коригирам fps в този код? или трябва да напиша стойността в регистрите на камерата?
След като заснема видеоклипа, ще имам буфер, който е пълен със сурови данни, искам да го компресирам или да използвам кодеци, за да го запазя като MPEG, мога ли да променя формата на пикселите, който да бъде компресиран (MPEG например) вместо YUYV? или какво трябва да направя, за да компресирам видеото? кодеци или какво?
Мога ли да запиша тези необработени данни в буфера във файл .yuv? Намерих софтуер, който може да възпроизвежда видеоклипове в този формат.
Възможно ли е да се използват кръгови буфери вместо линейни буфери за задържане на заснетото видео?
Знам, че публикацията ми е твърде дълга, но съм начинаещ и не мога да намеря никакви уроци, които да ми помогнат да напиша своя код.
Благодаря предварително