motion and vloopback 使用

motion and vloopback 使用

這次主要測試與了解 vloopback 的作用並與 motion 整合。

vloopback 主要作用在於產生 stream pipe。一般情形我們的 usbcam 只能被一個程式使用,例如 motion 在跑的時候你就不能用 vlc 去擷取它,因為 motion 會佔住它的資源;vloopback 則會額外產生 stream pipe 做底層的資料轉送,就可以多出一個 device可以使用。

{{http://www.my-net.idv.tw/%7Ethomas/wp/wp-content/uploads/2007/05/vloopback_s.jpg

vloopback 架構

安裝

主要是參考 http://www.lavrsen.dk/twiki/bin/view/Motion/LoopbackDevice

video4linux loopback device 下載最新的 vloopback並進行解壓縮

cd /usr/local

tar -xvzf /path/to/vloopback-1.1-rc1.tar.gz

ln -s vloopback-1.1-rc1 vloopback

cd vloopback

開始編譯,編譯前要先準備 kernel-source 在 /usr/src/linux

下載 kernel source 並解壓縮到 /usr/src/

ln -s /usr/src/linux-2.4.18-4 /usr/src/linux

編譯vloopback 

make

測試與使用 

載入模組

insmod /usr/local/vloopback/vloopback.k

dmesg log

[17475576.028000] /usr/local/src/vloopback-1.0/vloopback.c: Video4linux loopback driver v1.0

[17475576.032000] /usr/local/src/vloopback-1.0/vloopback.c: Loopback 0 registered, input: video1,output: video2

測試

我們的環境中 video0 是實體介面,載入vloopback模組之後,video1是vloopback input 介面, 而 video2 是輸出的介面。因此我們可以用 effedtv 把 video0 的 stream 餵到 video1,供其他程式由 video2 使用資源。

effectv -vloopback /dev/video1 -device /dev/video0

vlc v4l:// :v4l-vdev="/dev/video2" :v4l-adev="/dev/dsp" :v4l-norm=3 :v4l-frequency=-1

如果 effectv 和 vlc 都有畫面出來表示成功。還有更多應用方式

用 effectv 擷取並用ffmpeg錄下來

effectv -vloopback /dev/video1 -device /dev/video0

ffmpeg -vd /dev/video2 -s 320x240 effect.mpg

在 motion 中,只要加入一個option

video_pipe -

就會幫你把 MJpeg 的畫面," - " 表示轉送到 free 的 vloppback resourc,當然也可以直接指定input device

video_pipe /dev/video1

參考資料:

ref. motion http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

ref. vloopback

http://directory.fsf.org/vloopback.html, http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice

convert from Thomas blog post id 88 old convert log: ./142216/tag%3E2007%2005%20stream)

@2007 @05 @stream

Comments