LINUX.ORG.RU

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


0

0

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

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

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

Спасибо.

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

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

ffmpeg

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

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

Reset ★★★★★ ()

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

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

Artem_Korneev ()
Ответ на: Re: Работа с Видео от Reset

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

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

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

mv ★★★★★ ()

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

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

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

mv ★★★★★ ()

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

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

mv ★★★★★ ()

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

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

alabalaev ()
Ответ на: Re: Работа с Видео от alabalaev

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

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

mv ★★★★★ ()
Ответ на: Re: Работа с Видео от mv

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

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

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