运动检测VLCj

时间:2012-03-14 05:37:23

标签: java video-processing vlcj

我正在使用VLCj API编写网络摄像头录制应用程序。我需要一些关于来自网络摄像头的视频流中的运动检测的帮助。如果视频流中没有检测到动作,则应停止录制。

我尝试在 sout 链中使用 - 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 个答案:

答案 0 :(得分:3)

您错误地传递了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"