ilt*_*lid 5 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" };
Run Code Online (Sandbox Code Playgroud)
期待你的回复.提前致谢.
您错误地传递了 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"
};
Run Code Online (Sandbox Code Playgroud)
下面的选项字符串不起作用,因为两个 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"
Run Code Online (Sandbox Code Playgroud)
应该是这样的:
":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"
Run Code Online (Sandbox Code Playgroud)