5

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

我尝试在sout链中使用--video-filter=motion ,但没有检测到任何运动。

我的南链:

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"  };

期待你的回复。提前致谢。

4

1 回答 1

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"
于 2012-03-14T17:11:33.290 回答