LINUX.ORG.RU

Работа с Видео


0

0

Входные данные: кадры с устройства видеозахвата (просто массив пикселов). Задача: нужно накапливать видео за последние 10 секунд и при возникновении некоторого события сбрасывать их на винт.

Можно сделать топорно, просто по кругу записывать кадры за 10 сек, а потом их в несжатом виде писать в файл. Но здесь возникает проблема с увеличением времени буферизации.

Вопрос. Как и чем лучше жать по кадрам (библиотека для C/C++) как потом лучше все это хранить, чтобы не городить софт для просмотра, а, например, просматривать эти видео mplayer'ом.

Спасибо.

> Вопрос. Как и чем лучше жать по кадрам (библиотека для C/C++)

ffmpeg

> как потом лучше все это хранить, чтобы не городить софт для просмотра, а, например, просматривать эти видео mplayer'ом.

Городить софт для просмотра все равно придется иначе как ты будешь делать поиск событий? Чтоб просматривать сторонним софтом тебе придется делать экспорт.

Reset ★★★★★
()

Как уже подсказали - посмотри на ffmpeg. В его состав входит библиотека libavcodec, которой можно жать кадры.

Artem_Korneev
()
Ответ на: комментарий от Reset

> Городить софт для просмотра все равно придется иначе как ты будешь делать поиск событий?

Достаточно сборщику контейнера выдавать правильные timestamps.

mv ★★★★★
()

Жми всё кадры, храни указатели на чанки в кольцевом буфере. При наступлении события ищешь ключевой кадр в районе -10с, его и весь хвост сбрасываешь на диск. Начинать обязательно с ключевого кадра, иначе при старте с дельта-кадра артефакты страшные будут.

Можно все кадры ключевыми делать, но это, фактически, mjpeg получится.

mv ★★★★★
()

Ещё вариант: писать пожатый поток в /dev/shm кусками по 10 секунд, оставлять в живых только текущий записываемый и предыдущий. При наступлении события дописать или закрыть текущий кусок, без запарок вызывать внешний ffmpeg и склеивать два куска в один.

mv ★★★★★
()

Спасибо большое, это все варианты для рассмотрения. Возникла вот еще какая идея. Взять что-нибудь опенсурсное, что решает подобную задачу и прикрутить обработчик сигналов. Нет ли подобных проектов?

alabalaev
() автор топика
Ответ на: комментарий от alabalaev

Каких подобных? У вас вообще что за проект? На вскидку, запись по событиям, вроде, умеет zoneminder, но он годится только для видеонаблюдения за гаражом, разве что.

mv ★★★★★
()
Ответ на: комментарий от mv

Спасибо, посмотрю. Задача очень простая. Надо просто писать видео за 10 сек и 10 после возникновения события. Событие генерирует внешнее устройство, т.е. никакого моушн детекта не нужно. Нужен лишь базис для записи, сжатия, хранения, воспроизведения и т.д.

alabalaev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.