LINUX.ORG.RU

История изменений

Исправление Eddy_Em, (текущая версия) :

Нужны нам всего-то библиотеки v4l2 и OSS. При помощи v4l2 делаем захват видео (вот так я работал с веб-камерой, а так — с обычной видеокамерой). OSS используем для захвата звука (там вообще все элементарно). Алгоритмов определять движение на видео — пруд пруди, пользуемся одним из них (например, изучаем автокорреляционную функцию между кадрами, или — еще проще — изучаем разность между соседними кадрами). Определить наличие звука еще проще (выделяем некоторый порог, и как только амплитуда захваченного звука его превысит, считаем, что появился звук; со временем можно добавить фильтрацию шумов и даже распознавание посторонних звуков — как в методах отыскания движения на видео).

P.S. Буферизация выполняется нашим демоном в отведенную область разделяемой памяти. Через разделяемую же память происходит выдача информации о номере текущего буфера. При помощи UNIX queue можно реализовать общение клиента и демона. Выдачу изображений клиенту выполняет CGI, который с нужной частотой выбирает из буфера кадры, сжимает их, пишет разделитель и отправляет клиенту (mjpeg — простейший и самый универсальный способ выдачи видео). Со звуком, как я говорил выше, сложней (просто я еще не занимался выдачей звука по сети).

P.P.S. Если в буферы складывать уже сжатые изображения, клиентские CGI практически не нагружают сервер.

Исправление Eddy_Em, :

Нужны нам всего-то библиотеки v4l2 и OSS. При помощи v4l2 делаем захват видео (вот так я работал с веб-камерой, а так — с обычной видеокамерой). OSS используем для захвата звука (там вообще все элементарно). Алгоритмов определять движение на видео — пруд пруди, пользуемся одним из них (например, изучаем автокорреляционную функцию между кадрами, или — еще проще — изучаем разность между соседними кадрами). Определить наличие звука еще проще (выделяем некоторый порог, и как только амплитуда захваченного звука его превысит, считаем, что появился звук; со временем можно добавить фильтрацию шумов и даже распознавание посторонних звуков — как в методах отыскания движения на видео).

P.S. Буферизация выполняется нашим демоном в отведенную область разделяемой памяти. Через разделяемую же память происходит выдача информации о номере текущего буфера. При помощи UNIX queue можно реализовать общение клиента и демона. Выдачу изображений клиенту выполняет CGI, который с нужной частотой выбирает из буфера кадры, сжимает их, пишет разделитель и отправляет клиенту (mjpeg — простейший и самый универсальный способ выдачи видео). Со звуком, как я говорил выше, сложней (просто я еще не занимался выдачей звука по сети).

Исходная версия Eddy_Em, :

Нужны нам всего-то библиотеки v4l2 и OSS. При помощи v4l2 делаем захват видео (вот так я работал с веб-камерой, а так — с обычной видеокамерой). OSS используем для захвата звука (там вообще все элементарно). Алгоритмов определять движение на видео — пруд пруди, пользуемся одним из них (например, изучаем автокорреляционную функцию между кадрами, или — еще проще — изучаем разность между соседними кадрами). Определить наличие звука еще проще (выделяем некоторый порог, и как только амплитуда захваченного звука его превысит, считаем, что появился звук; со временем можно добавить фильтрацию шумов и даже распознавание посторонних звуков — как в методах отыскания движения на видео).