我正在使用 lepotato 运行 raspbian,在屏幕上显示图片。这些图片位于我可以从 Windows 电脑访问的共享文件夹中。输入是图片所在的位置,输出经过缩放,因此它们实际上是全屏的。我有一些代码来检查输入文件夹中是否进行了任何更改,因此它将调整输出文件夹。
我的问题:我需要幻灯片循环播放一次,然后关闭,显示下面的谷歌浏览器。等待设定的时间(10 分钟),然后再次播放幻灯片。
由于某种原因,即使我使用 --cycle-once,幻灯片仍会继续播放。我尝试使用循环计数,但这没有做任何事情。 T尝试让代码在查看输出中的图片后删除它们,然后在输出为空后睡眠并重新启动,但它没有看当查看图片时。
遗憾的是,我对 Linux 和编码还很陌生,并且在我的大部分工作中都使用了 chatGPT。我已经为此苦苦挣扎了三天,希望有人能帮助我。
当前代码:
#!/usr/bin/bash
input_folder="/home/power/Public/screen/input/"
output_folder="/home/power/Public/screen/output/"
slideshow_pid=""
### Function to upscale and copy images from the input folder to the output folder
upscale_and_copy() {
local file_path="$1"
local file_name=$(basename "$file_path")
local output_path="$output_folder/$file_name"
convert "$file_path" -resize 1920x1080^ "$output_path"
}
### Function to remove images from the output folder
remove_from_output_folder() {
local file_path="$1"
local file_name=$(basename "$file_path")
local output_path="$output_folder/$file_name"
rm "$output_path"
}
### Function to restart the slideshow
restart_slideshow() {
if [[ -n "$slideshow_pid" ]]; then
kill "$slideshow_pid"
fi
### Function that plays the actual slideshow
feh --quiet --fullscreen --cycle-once --slideshow-delay 3 "$output_folder" &
slideshow_pid=$!
}
### Upscale and copy existing images from input to output folder
for file in "$input_folder"/*; do
upscale_and_copy "$file"
done
### Display the images from the output folder in a slideshow
restart_slideshow
### Monitor input folder for changes and update the output folder accordingly
inotifywait -m -r -e create -e delete -e move -e modify "$input_folder" |
while read -r directory event filename; do
if [[ $event == "CREATE" || $event == "MODIFY" || $event == "MOVED_TO" ]]; then
upscale_and_copy "$input_folder/$filename"
restart_slideshow
elif [[ $event == "DELETE" || $event == "MOVED_FROM" ]]; then
remove_from_output_folder "$input_folder/$filename"
restart_slideshow
fi
done
我已经测试了以下内容,当我运行以下代码时,它仍然不断循环,因此 feh 本身以某种方式导致了问题:
feh --quiet --fullscreen --cycle-once --slideshow-delay 3 /home/power/Public/screen/output/ &
答案1
我自己找到了解决方案:
--cycle-once
最新版本不再支持feh
.您现在必须使用--on-last-slide
.