2012-03-14 33 views
5

Tôi đang viết một ứng dụng ghi webcam bằng cách sử dụng API VLCj. Tôi cần một số trợ giúp về phát hiện chuyển động trong luồng video từ webcam. Nếu không có chuyển động nào được phát hiện trong luồng video thì việc ghi sẽ dừng lại.phát hiện chuyển động VLCj

Tôi đã cố gắng sử dụng chuỗi - video-filter = motion trong sout nhưng không phát hiện bất kỳ chuyển động nào.

chuỗi sout của tôi:

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

Mong trả lời của bạn. Cảm ơn trước.

Trả lời

3

Bạn chuyển mảng chuỗi tùy chọn lệnh VLC không chính xác; nó sẽ giống như trong ví dụ sau (mỗi tùy chọn lệnh VLC sẽ được coi là một phần tử mảng):

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

Chuỗi tùy chọn bên dưới sẽ không hoạt động vì hai lệnh VLC được gộp vào một chuỗi; các :sout lệnh và --video-filter=motion lệnh:

":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" 

Nó phải là như sau:

":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

Cảm ơn bạn đã trả lời. Tôi đã thử nó nhưng nó không làm việc cho tôi. Giờ đây, luồng không được lưu vào tệp. Tôi hy vọng bạn đã đọc những gì tôi đang cố gắng để tạo ra một ứng dụng VLCj đa nền tảng sẽ ghi lại từ webcam và dừng ghi âm khi không có chuyển động được phát hiện trong video. –

+0

@iltafkhalid Lạ ... nó hoạt động với tôi bằng cách sử dụng VLCJ 1.2.0 và libVLC 1.1.11. Tôi thấy các hộp phát hiện chuyển động trong một video được phát bằng cách sử dụng phương thức 'playMedia (mrl, options)' của VLCJ với tùy chọn ': video-filter = motion' được bao gồm. – ecle

+0

@iltafkhalid Mã mẫu ở trên chỉ là ví dụ của tôi. Bạn cần phải thích ứng với nó theo yêu cầu của bạn nên bao gồm tùy chọn ': sout' của bạn để nó hoạt động – ecle

Các vấn đề liên quan