我有一个可用作v4l2设备的网络摄像头。
捕获定格或延时视频的最便捷方法是什么?
NB
定格和延时是相关的,但在概念上是不同的。
延时是指您按设定的时间间隔拍摄场景照片,然后将其组合到视频中(看起来真的非常快)。
定格动画是您控制场景并为所做的每个更改拍摄图像以形成动画(例如Wallace和Grommit)的地方。
延时摄影应用程序必须能够按设定的时间间隔拍照。
我有一个可用作v4l2设备的网络摄像头。
捕获定格或延时视频的最便捷方法是什么?
NB
定格和延时是相关的,但在概念上是不同的。
延时是指您按设定的时间间隔拍摄场景照片,然后将其组合到视频中(看起来真的非常快)。
定格动画是您控制场景并为所做的每个更改拍摄图像以形成动画(例如Wallace和Grommit)的地方。
延时摄影应用程序必须能够按设定的时间间隔拍照。
Answers:
第一步是捕获图像。假设您想每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。
-r 0.1
。
man streamer
没有描述每个参数的作用。在哪里可以获得有关j
参数的信息?在给定FPS的情况下,如何在按CTRL + C之前捕获它?
ffmpeg
对我不再有用。我应该使用什么?
streamer -h
更加全面。我讨厌开发人员投入大量精力,--help
但手册页却一无所获。
要从网络摄像头捕获每X秒钟的时间,请使用动作。
安装 motion
sudo apt-get install motion
要么 sudo aptitude install motion
每X秒配置一次运动
sudo nano /etc/motion/motion.conf
将变量minimum_frame_time和snapshot_interval更改为与网络摄像头拍照相同的秒数。
10分钟= 600秒
20分钟= 1200秒
30分钟= 1800秒
1小时= 3600秒
2小时= 7200秒,依此类推...
sudo motion
用CTRL+ 停止运动C
注意-将motion.conf配置为将文件保存在默认目录/ tmp以外的其他目录中。例如您的主文件夹。由于进入/ tmp需要更多特权。您还可以在motion.conf中找到许多有用的选项,这些选项可能会满足您的其他许多需求。
基于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不支持网络摄像头-无论如何,只要有人想用一台像样的数码相机而不是网络摄像头来尝试此答案,我将使该答案始终可见。
一个快速,肮脏但更灵活的选择如下:
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会尝试用第一张图片的副本覆盖所有图片文件(在操作文件之前复制备份始终是一个好主意。 )。
来自匿名用户的此编辑。
您应该能够设置运动(在motion.conf中)以进行流传输-默认情况下,它在端口8081上进行流传输。为获得“后视”镜像,您要做的就是打开VLC,“打开网络流”和将其指向http:// localhost:8081。
Camorama是一个网络摄像头查看器/记录器,我曾经以1分钟的间隔拍照,然后将其从我的网络摄像头上传到网络服务器;这是一个简单的设置。您也可以在Ubuntu软件中心找到它,也可以使用以下方法安装它:
sudo apt-get install camorama
希望这可以帮助。