Skip to content

延时

要创建延时视频,您只需将树莓派配置为以固定的间隔(例如每分钟一次)拍照,然后使用应用程序将图片拼接在一起成为视频。有两种方法可以做到这一点。

使用 raspistill 的内置延时模式

raspistill应用程序具有内置的延时模式,使用--timelapse(或-tl)命令行开关。切换后的值是两次射击之间的时间(以毫秒为单位):

raspistill -t 30000 -tl 2000 -o image%04d.jpg

注意输出文件名中的"%04d":这表示文件名中您要显示帧计数编号的点。因此,例如,上面的命令将在 30 秒(30000ms)的总时间内每两秒钟(2000ms)产生一次捕获,名为 image0001 .jpg,image0002.jpg,依此类推,直到 image0015 .jpg。

"%04d"表示一个四位数的数字,并添加了前导零以构成所需的数字位数。因此,例如,%08d将产生一个八位数的数字。如果您不希望前导零,则可以错过" 0"。

如果将 timelapse 值输入 0 ,则应用程序将尽快拍摄照片。请注意,两次捕获之间至少有大约 30 毫秒的强制暂停,以确保可以进行曝光计算。

使用 cron

定期自动拍照的一个好方法是使用cron。打开 cron 表进行编辑:

crontab -e

这将询问您要使用哪个编辑器,或在默认编辑器中打开。在编辑器中打开文件后,添加以下行以安排每分钟拍照(请参考raspistill页面中的 Bash 脚本):

* * * * * /home/pi/camera.sh 2>&1

保存并退出,您应该看到以下消息:

crontab:安装新的 crontab 

确保您使用例如用%04d来使 raspistill 将每个图像输出到一个新文件:如果不这样做,则每次 raspistill 每次写入图像都会覆盖相同的文件。

拼接图像

现在,您需要将照片拼接成视频。您可以使用mencoder在 Pi 上执行此操作,但是处理速度很慢。您可能希望将图像文件传输到台式计算机或便携式计算机,然后在此处生成视频。

导航到包含所有图像的文件夹,然后在文本文件中列出文件名。例如:

ls * .jpg> stills.txt

在树莓派上

尽管速度很慢(由于使用软件编码而不是使用树莓派硬件加速),但是您可以使用各种可用工具将 JPEG 图像拼接在一起。本文档将使用需要安装的avconv

sudo apt安装 libav -tools

现在,您可以使用这些工具将 JPEG 文件转换为 H264 视频文件:

avconv -r 10 -i image%04d.jpg -r 10 -vcodec libx264 -vf scale = 1280:720 timelapse.mp4

在树莓派 3上,它每秒可以编码多于一帧。其他 Pi 型号的性能会有所不同。使用的参数是:

--r 10假设输入和输出文件中每秒 10 帧。 --i image%04.jpg输入文件规范(以匹配捕获期间生成的文件)。 --vcodec libx264使用软件 x264 编码器。 --vf scale = 1280:720缩放至 720p 。您还可以根据需要使用 1920 :1080或更低的分辨率。请注意,Pi只能播放高达 1080p 的视频,但是如果您打算以 4K 播放,则可以在此处进行设置。 - timelapse.mp4输出文件的名称。

" avconv"具有用于更改编码选项和其他设置的综合参数集。这些可以使用avconv --help列出。

在另一台 Linux 计算机上

您可以使用与树莓派相同的说明,也可以使用诸如mencoder之类的替代软件包:

sudo apt安装 mencoder 

现在运行以下命令:

mencoder -nosound -ovc lavc -lavcopts vcodec = mpeg4:aspect = 16/9:vbitrate = 8000000 -vf scale = 1920:1080 -o timelapse.avi -mf type = jpeg:fps = 24 mf://@stills.txt

完成后,您应该有一个名为" timelapse.avi"的视频文件,其中包含图像的延时播放。