Klipper多個(gè)攝像頭+延時(shí)攝影——Crowsnest+Timelapse 保姆級教程

如果想讓你的Fluidd或Mainsail頁面顯示多個(gè)攝像頭,首先需要安裝Crowsnest組件。
Crowsnest的安裝
利用SSH工具(例如FinalShell)連接到上位機(jī)。
不要在root用戶下操作,su到你自己的用戶下。
如果沒有Kiauh,則:
cd ~
git clone?https://gitee.com/miroky/kiauh.git
下載好kiauh工具,如果已有kiauh則跳過此步。
輸入:
./kiauh/kiauh.sh

輸入1? 進(jìn)入Install頁面。

輸入12,這一步需要魔法上網(wǎng),要不然很有可能沒法安裝(如果你輸入12并回車后沒反應(yīng)),需要選擇Y的就選Y,安裝完后會(huì)提示你要不要重啟,確保沒問題就reboot。
重啟后就可以在config文件中找到crowsnest.conf這個(gè)文件,打開他。


如果你使用多攝像頭(最多四個(gè))。
則紅色圈出來的參數(shù)需要修改,rtsp_port參數(shù)可以自定義,默認(rèn)8854,只要多個(gè)攝像頭不重復(fù)即可。
port參數(shù):官方給出的分別為8080,8081,8082,8083,從8080開始每多一個(gè)攝像頭就依次設(shè)置不同的port。
device參數(shù):攝像頭地址,需要在SSH中輸入:
ls /dev/v4l/by-id/*?

用于查看USB的攝像頭地址,每個(gè)攝像頭都會(huì)有兩個(gè)地址,復(fù)制index0結(jié)尾的那個(gè)地址即可。
然后填入device中,格式為:/dev/v4l/by-id/你的攝像頭地址。
resolution參數(shù):分辨率,填寫時(shí)候切記不要把×打成*,否則無法顯示。
max_fps參數(shù):設(shè)置幀率的,如果上位機(jī)性能不佳建議5幀即可,高幀率會(huì)占用大量系統(tǒng)資源。
完成配置文件修改后選擇保存并重啟,然后在Fluidd的設(shè)置頁面中找到攝像頭設(shè)置,添加攝像頭。


視頻流類型選擇MJPEG視頻流,攝像頭地址是根據(jù)你的port參數(shù)決定的,如下圖所示
8080對應(yīng)/webcam/?action=stream
8081對應(yīng)/webcam2/?action=stream? ?以此類推 ? ? (注意沒有webcam1)

到此為止,刷新一次Fluidd后你就能看到你設(shè)置的攝像頭了。
Timelapse延時(shí)攝影的安裝
官網(wǎng)地址:GitHub - mainsail-crew/moonraker-timelapse: Timelapse Plugin for moonraker
SSH連接上位機(jī),輸入:
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
cd ~/moonraker-timelapse
make install
一路安裝有Y選Y
在moonraker.conf文件中加入以下文字
用于延時(shí)攝影更新以及激活延時(shí)攝影(不要?jiǎng)h除#,完整復(fù)制)
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
managed_services: klipper moonraker
[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 their 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
在printer.cfg文件中輸入以下文字
[include timelapse.cfg]
之后需要設(shè)置切片軟件的gcode,確保每一層拍一次照片用于合成延時(shí)攝影

以下是更詳細(xì)的配置,依舊需要添加在moonraker.conf文件中(不要?jiǎng)h除任何一個(gè)#,完整復(fù)制)
# [timelapse] section
#enabled: True
#mode: layermacro
#snapshoturl: http://localhost:8080/?action=snapshot
#gcode_verbose: True
#parkhead: False
#parkpos: back_left
#park_custom_pos_x: 0.0
#park_custom_pos_y: 0.0
#park_custom_pos_dz: 0.0
#park_travel_speed: 100
#park_retract_speed: 15
#park_extrude_speed: 15
#park_retract_distance: 1.0
#park_extrude_distance: 1.0
#hyperlapse_cycle: 30
#autorender: True
#constant_rate_factor: 23
#output_framerate: 30
#pixelformat: yuv420p
#time_format_code: %Y%m%d_%H%M
#extraoutputparams:?
#variable_fps: False
#targetlength: 10
#variable_fps_min: 5
#variable_fps_max: 60
#flip_x: False
#flip_y: False
#duplicatelastframe: 0
#previewimage: True
#saveframes: False
#wget_skip_cert_check: False

如果你不需要每一層都單獨(dú)停靠到一個(gè)位置拍照的話,就不需要?jiǎng)永锩娴娜魏卧O(shè)置,保持默認(rèn)即可,如果需要單獨(dú)??浚瑓?shù)就需要自己測試了,??繒r(shí)回抽多少,繼續(xù)打印時(shí)擠出多少都要自行嘗試(影響打印速度,我一直沒開過)。
中文翻譯如下所示僅供參考
#enabled: True #是否啟用時(shí)間延時(shí)攝影
#mode: layermacro #此模式使用宏來觸發(fā)抓取幀,但需要設(shè)置切片器才能在圖層更改時(shí)添加GCODE
#snapshoturl: http://localhost:8080/?action=snapshot #攝像頭調(diào)用地址
#gcode_verbose: True #?“true”啟用或“false”禁用宏的詳細(xì)程度?
#parkhead: False #?“true”啟用或“false”禁用在拍攝幀之前移動(dòng)打印頭。?
#parkpos: back_left ?#這定義了在拍攝相框之前將打印頭停放的位置??赡艿呐渲檬荹center, front_left, front_right, back_left, back_right, custom]
#如果選擇了custom想要自定義打印頭駐留的位置可以設(shè)置下面的參數(shù)
#park_custom_pos_x: 0.0 ?#自定義打印頭駐留的絕對 X 坐標(biāo)(單位 mm)?
#park_custom_pos_y: 0.0 #自定義打印頭駐留的絕對 Y 坐標(biāo)(單位 mm)
#park_custom_pos_dz: 0.0 #?自定義打印頭駐留的相對 Y 坐標(biāo)(單位 mm)?
#park_travel_speed: 100 #駐留時(shí)打印頭移動(dòng)速度(單位毫米/秒
#park_retract_speed: 15 ?#駐留時(shí)縮回速度(單位毫米/秒)?
#park_extrude_speed: 15 #?恢復(fù)打印時(shí)擠出的速度(單位毫米/秒)?
#park_retract_distance: 1.0 #?回抽來以防止?jié)B出的距離(單位毫米)?
#park_extrude_distance: 1.0 #?恢復(fù)打印之前擠出以填充噴嘴的距離(單位 mm)?
#hyperlapse_cycle: 30 #定義在超延時(shí)模式下拍攝幀的時(shí)間間隔
#autorender: True #?“true”啟用或“false”禁用打印結(jié)束時(shí)渲染過程的自動(dòng)觸發(fā)?;蛘撸梢允褂米罱K gcode 中的“TIMELAPSE_RENDER”或渲染 http 終端節(jié)點(diǎn)(可能集成到前端)來觸發(fā)渲染過程。?
#constant_rate_factor: 23 #?這將配置渲染視頻的質(zhì)量與文件大小。CRF 刻度的范圍是 0–51,其中 0 表示無損,23 表示默認(rèn)值,51 表示質(zhì)量最差。較低的值通常會(huì)導(dǎo)致較高的質(zhì)量,主觀上合理的范圍為17-28。將 17 或 18 視為視覺上無損。更多信息:??https://trac.ffmpeg.org/wiki/Encode/H.264?F
#output_framerate: 30 #?定義視頻的幀速率。(每秒單位幀數(shù))注意:如果啟用了variable_fps,這將被忽略。?
#pixelformat: yuv420p #?定義輸出視頻的像素格式。一些較舊的h264設(shè)備,如手機(jī)和其他設(shè)備需要“ yuv420p”,這是默認(rèn)的延時(shí)組件。要獲取哪些像素格式可用的更多信息,請?jiān)谙到y(tǒng)控制臺(tái)中運(yùn)行“ffmpeg -pix_fmts”或參考 ffmpeg 文檔:??https://ffmpeg.org/ffmpeg.html?
#time_format_code: %Y%m%d_%H%M #?這定義了應(yīng)如何命名呈現(xiàn)的視頻。它使用 python 日期時(shí)間格式。默認(rèn)值為“%Y%m%d_%H%M”。有關(guān)日期時(shí)間格式的更多信息,請參閱??此處 https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes?
#extraoutputparams:? ?定義FFMPEG的額外輸出參數(shù) 更多信息: ??https://ffmpeg.org/ffmpeg.html?? 注意:在這里指定任何內(nèi)容可能會(huì)禁用其他功能?。╢fmpeg 限制)?
#variable_fps: False #?“true”啟用或“false”禁用輸出幀速率的變量計(jì)算。這使用拍攝的幀數(shù)和“目標(biāo)長度”,但受“variable_fps_min”和“variable_fps_max”設(shè)置的限制。
#targetlength: 10 定義視頻的目標(biāo)長度(單位秒)
#variable_fps_min: 5 ?variable_fps的最小 fps(每秒幀數(shù))。?
#variable_fps_max: 60 variable_fps的最大 fps(每秒幀數(shù))。?
#flip_x: False
#flip_y: False
#duplicatelastframe: 0 #?將最后一幀復(fù)制到輸出視頻的末尾。?
#previewimage: True #?“true”啟用或“false”禁用最后一幀來生成預(yù)覽縮略圖?
#saveframes: False ?“True”啟用或“False”禁用將幀打包到 zip 文件以供外部使用或呈現(xiàn)。
至此,所有設(shè)置均已完成,享受你的延時(shí)攝影吧