2012-03-14 2 views
5

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

Я пытался использовать --video-фильтра = движение в Sout цепи, но это не обнаружено какое-либо движение.

Моя 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" }; 

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

ответ

3

Неправильно передается массив строк параметров команды 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" 
+0

Спасибо за ответ. Я попробовал, но это не работает для меня. Теперь поток даже не сохраняется в файле. Надеюсь, вы прочитали то, что я пытаюсь создать кросс-платформенное приложение VLCj, которое будет записывать с веб-камеры и прекращать запись, если в видео не обнаружено движения. –

+0

@iltafkhalid Strange ... он работает для меня, используя VLCJ 1.2.0 и libVLC 1.1.11. Я вижу блоки обнаружения движения в видео, воспроизводимом с использованием VLCJ 'playMedia (mrl, options)' метода с включенной опцией ': video-filter = motion'. – ecle

+0

@iltafkhalid Пример кода, приведенный выше, является только моим примером. Вам нужно адаптировать его в соответствии с вашим требованием, которое должно включать в себя ваш параметр ': sout' для его работы. – ecle

Смежные вопросы