обнаружение движения VLCj - PullRequest
5 голосов
/ 14 марта 2012

Я пишу приложение для записи веб-камеры, используя VLCj API. Мне нужна помощь в обнаружении движения в видеопотоке с веб-камеры. Если в потоке видео не обнаружено движения, запись прекращается.

Я пытался использовать - video-filter = motion в sout цепочке, но не обнаружил никакого движения.

Моя цепочка соусов:

String[] options = {
                    ":sout=#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=" + fileName + "},dst=display,select=noaudio,video-filter=motion} --video-filter=motion",":input-slave=alsa://hw:0,0"  };

Ждем вашего ответа. Заранее спасибо.

1 Ответ

3 голосов
/ 14 марта 2012

Вы неверно передаете массив строк параметров команды VLC; это должно быть как в следующем примере (каждая опция команды VLC должна рассматриваться как элемент массива):

String[] options = {
    ":rtsp-mcast", 
    ":sharpen-sigma=2.0", 
    ":video-filter=motion",
    ":blur-factor=127", 
    ":ipv4-timeout=3000", 
    ":no-video-title-show", 
    ":loop", 
    ":sout-all",
    ":sout-keep"
};

Строка параметров ниже не будет работать, так как две команды VLC включены вместе в одну строку; команда :sout и команда --video-filter=motion:

":sout=#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=" + fileName + "},dst=display,select=noaudio,video-filter=motion} --video-filter=motion"

Должно быть так:

":sout=#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=" + fileName + "},dst=display,select=noaudio,video-filter=motion}",
"--video-filter=motion"
...