逐帧保存网络摄像头视频

时间:2016-05-01 10:35:15

标签: webcam video-capture avconv

是否有解决方案从USB网络摄像头捕获视频并使用命令行将每个帧保存在Linux系统上的jpeg文件作为jpeg文件?或者我应该使用opencv吗?

到目前为止,我已设法通过此系统调用将流保存到avi文件:

avconv -f video4linux2 -s 640x480 -i /dev/video0 video1.avi

为了获得单帧,我可以使用它:

fswebcam -r 640x480 --jpeg 85 -D 1 shot.jpg

问题是,如果我把这最后一个命令放在一个循环中,我设法每秒只能得到一帧。由于avconv命令设法以30fps保存avi文件没有问题,我想如果我找到了正确的命令,它可以设法以30 fps保存jpeg文件的顺序。

我知道有一个命令可以从视频文件中保存jpeg中的单帧,并且工作正常:

avconv -i video1.avi -r 30 -f image2 out_%04d.jpg

但是,如果我试试这个:

avconv -i /dev/video0 -r 30 -f image2 out_%04d.jpg

我收到此错误:

/dev/video0: Operation not permitted

有解决方案吗?

谢谢

1 个答案:

答案 0 :(得分:0)

不确定这是否有用,但在openshot中,您可以导入视频并将其转换为图像序列。序列将导出到同一目录中的文件夹中,每个帧都是png。我只是通过openshot的gui使用它,但是,我不知道命令行的用法。在gui中只需右键单击导入的视频文件,就可以选择转换为图像序列。