我正在使用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" };
期待您的回复。提前谢谢。
答案 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"