如何使用网络摄像头制作定格或定时视频?


28

我有一个可用作v4l2设备的网络摄像头。

捕获定格或延时视频的最便捷方法是什么?

NB

定格和延时是相关的,但在概念上是不同的。

延时是指您按设定的时间间隔拍摄场景照片,然后将其组合到视频中(看起来真的非常快)。

定格动画是您控制场景并为所做的每个更改拍摄图像以形成动画(例如Wallace和Grommit)的地方。

延时摄影应用程序必须能够按设定的时间间隔拍照。


照片中的类似问题具有部分重叠的有趣答案。
anarcat

Answers:


40

捕获不计其数的图像。

第一步是捕获图像。假设您想每10秒拍摄一张照片并将其保存到桌面上的目录中

mkdir ~/Desktop/cap
cd ~/Desktop/cap

我们streamer用来做捕获,所以让我们安装它:

sudo apt-get install streamer

现在我们要捕捉

streamer -o 0000.jpeg -s 300x200 -j 100 -t 2000 -r 1

-t是我们要捕获的帧数。-r是每秒的帧数。因此,这应该每秒抓取一帧。如果将其压缩为30fps视频,则一分钟的捕获将变为2秒的视频。您将需要根据要输出的视频量适当地进行调整。

该行将为您提供2000张图像,录制将花费半小时,并且以30fps的速度生成仅1分钟的视频。

放在一起

我要用ffmpeg。有多种不同的组合方式,包括mencoder但我只是更喜欢ffmpeg生活观。安装sudo apt-get install ffmpeg完()后,只需将其删除:

ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4

那里的质量设置与我的网络摄像头不一样,因此您可能想更多地使用这些选项以获得更好的编码,但这应会生成一个不错的30fps视频,并以x264压缩。

您可能想使用帧率(-r),但我不会低于15fps。


1
每十秒钟将需要一次-r 0.1
SeppoErviälä11年

man streamer没有描述每个参数的作用。在哪里可以获得有关j参数的信息?在给定FPS的情况下,如何在按CTRL + C之前捕获它?
托马什Zato -恢复莫妮卡

@oli ffmpeg对我不再有用。我应该使用什么?
蒂姆(Tim)

1
@ChrisH从技术上讲还不错,我只是说这是流畅视频的基本要求。这在很大程度上取决于您服用它们的速度。
奥利(Oli)

2
@TomášZato streamer -h更加全面。我讨厌开发人员投入大量精力,--help但手册页却一无所获。
WasabiFlux

9

要从网络摄像头捕获每X秒钟的时间,请使用动作。

安装 motion

sudo apt-get install motion 要么 sudo aptitude install motion

每X秒配置一次运动

sudo nano /etc/motion/motion.conf

将变量minimum_frame_timesnapshot_interval更改为与网络摄像头拍照相同的秒数。

10分钟= 600秒
20分钟= 1200秒
30分钟= 1800秒
1小时= 3600秒
2小时= 7200秒,依此类推...

sudo motionCTRL+ 停止运动C

注意-将motion.conf配置为将文件保存在默认目录/ tmp以外的其他目录中。例如您的主文件夹。由于进入/ tmp需要更多特权。您还可以在motion.conf中找到许多有用的选项,这些选项可能会满足您的其他许多需求。


那比流光好得多。不确定我是否喜欢必不可少的解决方案,似乎我失去了像后视镜一样使用它的能力,但是它比流光要好得多,并且可能解决了我一直想看的另一个问题在,只有在我在的时候才拍照。如果可以解决其他问题,将标记为已解决。
Dave Jacoby

实际上,您不需要root访问权限即可使用它。您只需要root用户访问权限即可编辑配置文件。
路易斯·阿尔瓦拉多

我想如果您要写入默认路径,也可能有必要,但这是我更改的第一件事。谢谢。
Dave Jacoby

没问题的哥们。乐意效劳。
Luis Alvarado

我尝试过这个。工作正常。我可能会在某个时候再试一次。但这并没有给我带来后视方面的感觉,我比自动拍照更有价值。所以,我现在正在运行Cheese。
Dave Jacoby

7

gTimelapse下载链接

在此处输入图片说明

基于gPhoto2和wxWidgets库的用于捕获图像以生成延时视频的应用程序。

编译指令

从sourceforge网站下载源代码

在终端中输入以下内容:

cd Downloads 
gunzip gtimelapse-0.1.tar.gz
tar -xvf gtimelapse-0.1.tar
cd gtimelapse
sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev gphoto2
./configure
make
sudo make install

运行应用程序类型

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

请参阅此博客以获取更多有用信息

列出应用程序支持的所有兼容设备

nb 3

我已经读过gphoto2不支持网络摄像头-无论如何,只要有人想用一台像样的数码相机而不是网络摄像头来尝试此答案,我将使该答案始终可见。


具有所有先决条件的获取和编译wxWidgets花费了很多时间。我也编译了gTimelapse,但是它崩溃了:[调试] 13:21:12:./src/common/menucmn.cpp(859):断言“项目”在Check()中失败:wxMenu :: Check:没有这样的项目[调试]正在生成堆栈跟踪...请稍候跟踪/断点陷阱
Seppo Erviälä11,2011年

好的-我今天有时间去构建自己-我会在回答中添加一些说明(假设我可以自己构建)。
fossfreedom

因为我有gphoto2支持的数码相机,所以这实际上很有帮助。我不知道存在像这样的图书馆。
SeppoErviälä11年

1

我使用Stopmotion来做到这一点,它在软件中心中。您也可以使用Cheese进行捕获,但是必须更改Cheese的配置以增加最大图像数量。我发现在整个过程中使用Stopmotion最简单。


1

最好,最简单的方法是安装Motion。它是用于基于Linux的操作系统的全面监视软件。

通过软件中心安装


1

一个快速,肮脏但更灵活的选择如下:

ffmpeg -pattern_type glob -framerate 25 -i 'image-*.jpg' -c:v libx264 \
    -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

在这里,我-pattern_type glob使用通配符添加*文件名,并用单引号引起来'image-*.jpg'

好处:这种语法使您可以从任何数字开始,并在其编号中具有任何模式(例如,我通常以20为单位创建计数,例如从20000开始)。

缺点:这种语法不允许像'%## d'语法允许的那样跳过重复的数字。另外,如果没有前面的0,就不能有编号方案。也就是说,文件命名方案必须类似于00001,00002,... 00033 ...(编号不能为1,2,3,... 33,...,否则数字'3'将在例如“ 39”和“ 40”)。

另外,还请注意,我必须将输入文件名放在单引号中,否则ffmpeg会尝试用第一张图片的副本覆盖所有图片文件(在操作文件之前复制备份始终是一个好主意。 )。

来自匿名用户的此编辑


0

您应该能够设置运动(在motion.conf中)以进行流传输-默认情况下,它在端口8081上进行流传输。为获得“后视”镜像,您要做的就是打开VLC,“打开网络流”和将其指向http:// localhost:8081


0

Camorama是一个网络摄像头查看器/记录器,我曾经以1分钟的间隔拍照,然后将其从我的网络摄像头上传到网络服务器;这是一个简单的设置。您也可以在Ubuntu软件中心找到它,也可以使用以下方法安装它:

sudo apt-get install camorama

希望这可以帮助。


抱歉,刚刚看到您编写的网络摄像头不适用于Camorama。
kicsyromy 2011年

您能详细解释一下吗?男人不包括游戏中时光倒流选项:(
火星罗伯逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.