Pipe
如何讀取背景擷取已使用的網路攝像頭?
網路
ffmpeg
攝像頭擷取正在後台執行。ffmpeg -f video4linux2 -s vga -i /dev/video0 capture.mp4 (1)
ffplay
因此,由於使用了該設備,我無法閱讀它/dev/video0
:ffplay -f video4linux2 -s vga -i /dev/video0 (2) [...] /dev/video0: Device or resource busy
如何在
ffplay
不停止後台擷取的情況下讀取網路攝像頭?PS:後台抓包命令不要修改。我知道這可以通過使用 fifo 修改命令 (1) 來完成。
做這個:
sudo modprobe v4l2loopback devices=1
如果您遇到類似的錯誤
modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/4.6.0-kali1-amd64
,請先安裝 v4l2loopback-dkms,例如:sudo apt-get install v4l2loopback-dkms
現在先執行它(注意它不能通過尾隨作為後台程序執行
&
):ffmpeg -f video4linux2 -i /dev/video0 -codec copy -f v4l2 /dev/video1
在不停止上述過程的情況下,在其他 bash 會話中,您應該能夠同時執行兩個命令,即
ffmpeg -f video4linux2 -s vga -i /dev/video1 capture.mp4
和ffplay -f video4linux2 -s vga -i /dev/video1
(將其更改為 /dev/video1)。如果您將其設置為
2
:sudo modprobe v4l2loopback devices=2
然後你可以這樣做
ffmpeg -f video4linux2 -i /dev/video0 -codec copy -f v4l2 /dev/video1 -codec copy -f v4l2 /dev/video2
,它允許你同時使用 /dev/video1 和 /dev/video2。