Как настроить сервер веб-камеры с помощью Python?

У меня есть приложение Python, работающее на компьютере, которое использует мою веб-камеру, выполняет некоторую обработку изображений и предоставляет некоторые данные.

Теперь я хочу сделать доступными как данные, так и видеопоток через сервер или какой-либо веб-сайт, чтобы любой компьютер или программа в локальной сети могли иметь доступ как к данным, так и к видеопотоку (иметь доступ к данным и просмотрите видеопоток).

Я знаю, как сделать данные доступными — я могу настроить HTTP-сервер, используя что-то вроде Flask.

Однако я не очень уверен в том, как сделать видеопоток доступным аналогичным образом. Я нашел этот вопрос - сценарий OP почти идентичен тому, что у меня есть, - но ответа скорее не хватало в технических подробностях. Я также нашел этот ответ, который рекомендует что-то под названием "flumotion", но в комментариях говорится, что это решение "nix", и я Работаю в основном с окнами.

Каким будет лучший метод или лучшая библиотека Python для того, чтобы сделать видеопоток общедоступным описанным способом?


person Michael0x2a    schedule 06.08.2013    source источник
comment
Должен ли он быть интегрирован в ваше программное обеспечение и, следовательно, написан на Python, или вы сохраняете свой поток на диск или можете перенаправить его в другое программное обеспечение?   -  person Claudio    schedule 06.08.2013
comment
Любое решение будет работать, если оно работает в режиме реального времени.   -  person Michael0x2a    schedule 06.08.2013


Ответы (1)


Я когда-то сделал полностью написанный на Python видеорегистратор для управления параметрами V4L2 платы видеоввода и реализации протокола для передачи записанных файлов по низкоскоростному радиоканалу. Для потоковой передачи я пробовал как VLC, так и ffserver. В этом ответе вы можете найти множество моих тестов с VLC, которые могут подойти для того, что вы хотите сделать.

Поскольку мне приходилось записывать файлы на диск, а также передавать их в локальный веб-интерфейс (тоже написанный на Python с использованием web2py), в итоге я использовал процесс ffmpeg для кодирования потока в h264, записи его на диск и перенаправления на петлевое видеоустройство. Затем, когда пользователь получит доступ к экрану конфигурации видео в веб-интерфейсе, будет запущен еще один процесс ffmpeg для потоковой передачи видео с петлевого устройства на видеоплеер с использованием UDP:

ffmpeg -loglevel quiet -f v4l2 -i /dev/video1 -f h264 -preset ultrafast udp://hostip:port

Стоит отметить, что, поскольку этот поток был необработанным потоком h264, пользователь должен был иметь подключаемый модуль VLC, чтобы иметь возможность просматривать его, так как большинство видеоплееров на основе флэш-памяти не способны обрабатывать необработанный поток h264.

person Claudio    schedule 06.08.2013