Недавно я рассматривал варианты веб-камеры и остановился на GStreamer. Ему нужны отдельные нативные библиотеки, но вы можете связать их со своей программой (проверьте лицензию).
Хорошей новостью является то, что он встроен в потоковое видео и аудио. Плохая новость заключается в том, что требуется немного времени, чтобы разобраться, поскольку он невероятно гибкий. Вот пример настройки потоков из командной строки в Windows.
Send video:
gst-launch ksvideosrc ! queue ! video/x-raw-yuv,width=320,height=240,framerate=4/1 ! videorate ! videoscale ! ffmpegcolorspace ! queue ! smokeenc ! queue ! udpsink host=[TARGET_IP_ADDRESS] port=5000
Receive video:
gst-launch udpsrc port=5000 ! smokedec ! autovideosink
Send audio:
gst-launch audiotestsrc ! audioconvert ! audio/x-raw-int,channels=1,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink host=[TARGET_IP_ADDRESS] port=5001
Receive audio:
gst-launch udpsrc port=5001 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, width=16, height=16, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, channel-positions=(int)1, payload=(int)96" ! rtpL16depay ! audioconvert ! audioresample ! directsoundsink
Звуковые потоки адаптированы из ответа здесь:
перемещение аудио по локальной сети с помощью GStreamer
Для Linux измените ksvideosrc на v4l2src и directsoundsink на alsaink. Все, что возможно в командной строке, возможно из Java с помощью библиотеки gstreamer-java:
http://code.google.com/p/gstreamer-java/
А вот еще несколько полезных ссылок:
Руководство по GStreamer
Шпаргалка
Примеры веб-камеры
Информация о потоковой передаче
person
Russ Hayward
schedule
21.04.2012