2012-03-14 51 views
5

我正在使用VLCj API編寫網絡攝像機錄製應用程序。我需要一些關於攝像頭視頻流中運動檢測的幫助。如果在視頻流中沒有檢測到運動,則應停止記錄。運動檢測VLCj

我曾嘗試使用- 視頻濾波器=運動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命令選項字符串數組;它應該是如在下面的例子中(每個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應用程序,該應用程序將從網絡攝像頭進行錄製,並在視頻中未檢測到運動時停止錄製。 – 2012-03-15 12:05:06

+0

@iltafkhalid奇怪......它對我使用VLCJ 1.2.0和libVLC 1.1.11。我在包含':video-filter = motion'選項的VLCJ'playMedia(mrl,options)'方法中播放視頻中看到運動檢測框。 – ecle 2012-03-15 12:29:01

+0

@iltafkhalid上面的示例代碼就是我的例子。您需要根據您的要求對其進行調整,其中應包括您的':sout'選項以使其可以正常工作 – ecle 2012-03-15 12:31:08