以前因为想搞延时摄影所以用了octoprint当上位机,后来因为好多人说klipper好,就又换了klipper。今天搜了一下发现klipper也有延时摄影的插件,就准备搞一搞。
安装
因为是Moonraker的插入件,所以在安装前要先安装moonraker和klipper,并正常运行。
用SSH连接到上位机,并切换使用安装klipper使用的帐户并执行命令:
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
bash ~/moonraker-timelapse/install.sh
注意:脚本假定 Klipper 在您的主目录中的 “klipper”:${HOME}/klipper和 “moonraker”:下${HOME}\moonraker。渲染功能取决于 ‘/usr/bin/ffmpeg’ 中的 ffmpeg。MainsailOS 和 fluiddPi 已经安装了它。如果您手动设置操作系统,您也需要手动安装 ffmpeg,才能使用渲染功能!为此运行:sudo apt install ffmpeg. 如果您已将 ffmpeg 安装在不同的目录中,则可以在 [timelapse] 部分的 moonraker.conf 中指定“ffmpeg_binary_path”
使用 moonraker 更新管理器启用更新
将以下内容添加到您的“moonraker.conf”中,可以使用 moonraker 的更新管理器更新Moonraker-timelapse
# moonraker.conf
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
配置
在klipper配置文件printer.cfg中引用timelapse的宏命令文件
# printer.cfg
[include timelapse.cfg]
在切片软件中加入触发延时摄影的Gcode命令TIMELAPSE_TAKE_FRAME
在moonraker的配置文件中添加timelapse插件配置,激活插件
# moonraker.conf
[timelapse]
## Following basic configuration is default to most images and don't need
## to be changed in most scenarios. Only uncomment and change it if your
## Image differ from standart installations. In most common scenarios
## a User only need [timelapse] in there configuration.
output_path: ~/timelapse/
## Directory where the generated video will be saved
frame_path: /tmp/timelapse/
## Directory where the temporary frames are saved
ffmpeg_binary_path: /usr/bin/ffmpeg
## Directory where ffmpeg is installed
详细配置可以通过网页目录“/machine/timelapse/settings”下查看,在哪配置的没搞懂,但经过实验可以在上面timelapse后面加上“# [timelapse] section”来实现配置,注意前面的#号不能去,并且配置的#号也可无视。
# moonraker.conf
# [timelapse] section
#enabled: True
##是否启用时间延时摄影
#mode: layermacro
##此模式使用宏来触发抓取帧,但需要设置切片器才能在图层更改时添加GCODE
#snapshoturl: http://localhost:8080/?action=snapshot
##摄像头调用地址
#gcode_verbose: True
##“true”启用或“false”禁用宏的详细程度
#parkhead: False
##“true”启用或“false”禁用在拍摄帧之前移动打印头。
#parkpos: back_left
##这定义了在拍摄相框之前将打印头停放的位置。可能的配置是[center, front_left, front_right, back_left, back_right, custom]
#如果选择了custom想要自定义打印头驻留的位置可以设置下面的参数
#park_custom_pos_x: 0.0
##自定义打印头驻留的绝对 X 坐标(单位 mm)
#park_custom_pos_y: 0.0
##自定义打印头驻留的绝对 Y 坐标(单位 mm)
#park_custom_pos_dz: 0.0
##自定义打印头驻留的相对 Y 坐标(单位 mm)
#park_travel_speed: 100
##驻留时打印头移动速度(单位毫米/秒
#park_retract_speed: 15
##驻留时缩回速度(单位毫米/秒)
#park_extrude_speed: 15
##恢复打印时挤出的速度(单位毫米/秒)
#park_retract_distance: 1.0
##回抽来以防止渗出的距离(单位毫米)
#park_extrude_distance: 1.0
##恢复打印之前挤出以填充喷嘴的距离(单位 mm)
#hyperlapse_cycle: 30
##定义在超延时模式下拍摄帧的时间间隔
#autorender: True
##“true”启用或“false”禁用打印结束时渲染过程的自动触发。或者,您可以使用最终 gcode 中的“TIMELAPSE_RENDER”或渲染 http 终端节点(可能集成到前端)来触发渲染过程。
#constant_rate_factor: 23
##这将配置渲染视频的质量与文件大小。CRF 刻度的范围是 0–51,其中 0 表示无损,23 表示默认值,51 表示质量最差。较低的值通常会导致较高的质量,主观上合理的范围为17-28。将 17 或 18 视为视觉上无损。更多信息: https://trac.ffmpeg.org/wiki/Encode/H.264F
#output_framerate: 30
##定义视频的帧速率。(每秒单位帧数)注意:如果启用了variable_fps,这将被忽略。
#pixelformat: yuv420p
##定义输出视频的像素格式。一些较旧的h264设备,如手机和其他设备需要“ yuv420p”,这是默认的延时组件。要获取哪些像素格式可用的更多信息,请在系统控制台中运行“ffmpeg -pix_fmts”或参考 ffmpeg 文档:https://ffmpeg.org/ffmpeg.html
#time_format_code: %Y%m%d_%H%M
##这定义了应如何命名呈现的视频。它使用 python 日期时间格式。默认值为“%Y%m%d_%H%M”。有关日期时间格式的更多信息,请参阅此处 https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
#extraoutputparams:
##定义FFMPEG的额外输出参数 更多信息: https://ffmpeg.org/ffmpeg.html 注意:在这里指定任何内容可能会禁用其他功能!(ffmpeg 限制)
#variable_fps: False
##“true”启用或“false”禁用输出帧速率的变量计算。这使用拍摄的帧数和“目标长度”,但受“variable_fps_min”和“variable_fps_max”设置的限制。
#targetlength: 10
##定义视频的目标长度(单位秒)
#variable_fps_min: 5
##variable_fps的最小 fps(每秒帧数)。
#variable_fps_max: 60
##variable_fps的最大 fps(每秒帧数)。
#flip_x: False
#flip_y: False
#duplicatelastframe: 0
##将最后一帧复制到输出视频的末尾。
#previewimage: True
##“true”启用或“false”禁用最后一帧来生成预览缩略图
#saveframes: False
#“True”启用或“False”禁用将帧打包到 zip 文件以供外部使用或呈现。
注意:所有的配置项后面不能加注释