gpt4 book ai didi

bash - Kdialog 无法使用进度条中的 ffmpeg 取消作业,使用其他命令它可以工作 :S

转载 作者:行者123 更新时间:2023-12-04 23:31:00 26 4
gpt4 key购买 nike

我做了一个脚本来用 ffmpeg 转换我的东西

它确实:

1 创建带有取消按钮的进度条
2 循环转换文件
3 设置进度值

它工作正常,但是当我单击取消时它不会停止 ffmpeg

奇怪的是,当我使用像 echo 这样的另一个程序时,它的工作方式就像是 ffmpeg 问题

谁能帮我找出诀窍?

listoffile="$HOME/ffmpeglist.lst"
numberoffile=$(wc -l <$listoffile)
ffmpegpath="/usr/bin/ffmpeg"

mystufvariabletouseonmyscript=$(kdialog --progressbar "hello this is a progress bar with 100 steps" 100) ; sleep 2 ; qdbus $mystufvariabletouseonmyscript showCancelButton true




until test "true" = `qdbus $mystufvariabletouseonmyscript wasCancelled` ; do

while read line ; do
qdbus $mystufvariabletouseonmyscript org.kde.kdialog.ProgressDialog.setLabelText $"Starting Conversion...processing file $line"


$ffmpegpath -i "$line" "${line%%.*}.$mp3"


value=$(( $(($a*100))/$numberoffile ))
qdbus $mystufvariabletouseonmyscript Set org.kde.kdialog.ProgressDialog value $value
a=$(($a+1))

done< "$listoffile"

done

最佳答案

这是我的答案确保你已经设置了一个我为这个做的文件夹

/usr/share/sounds/但这是一个很好的例子,因为文件很短,所以......

ls -d -1 /usr/share/sounds/*.* > /tmp/listoffile.txt 
a=$(kdialog --title $"FFmpeg Dolphin Service Menu" --progressbar $"Starting Conversion..." 100)
b=$(kdialog --title $"FFmpeg Dolphin Service Menu" --progressbar $"Global work..." 100)

qdbus $b showCancelButton true

qdbus $b org.kde.kdialog.ProgressDialog.autoClose true


numberoffile=$(wc -l <"/tmp/listoffile.txt")
echo $numberoffile
count=1

while read <&3 line ; do

while read linetwo ; do
qdbus $a org.kde.kdialog.ProgressDialog.setLabelText $"Processing file..... $line"
qdbus $a showCancelButton true
while [[ $(qdbus $a wasCancelled) != "false" || $(qdbus $b wasCancelled) != "false" ]] ; do
echo -e "$COL_RED ECHO KILLING AXEL AND KDIALOG $COL_RESET"
qdbus $a org.kde.kdialog.ProgressDialog.close
qdbus $b org.kde.kdialog.ProgressDialog.close
exit
done

qdbus $a Set org.kde.kdialog.ProgressDialog value "$linetwo"

done < <((pv -W -n "$line" | ffmpeg -y ciao.flac -i pipe:0 2>/tmp/logffm.lst) 2>&1 )
v=$(( $(($count*100))/$numberoffile ))
echo $(($count*100)) and
count=$(($count+1))
echo "qdbus $b Set org.kde.kdialog.ProgressDialog value $v"
qdbus $b Set org.kde.kdialog.ProgressDialog value $v

done 3<"/tmp/listoffile.txt"

关于bash - Kdialog 无法使用进度条中的 ffmpeg 取消作业,使用其他命令它可以工作 :S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10619645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com