bash - 我在 *.mp4 中为 i 执行操作,然后在循环中我想使用 ${i} 但没有 .mp4。我该怎么做?

bash - 我在 *.mp4 中为 i 执行操作,然后在循环中我想使用 ${i} 但没有 .mp4。我该怎么做?

基本上我是这样做的:

for i in *.mp4; 
do ffmpeg -i "${i}" -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "${i}-watermarked.mp4"; 
done;

但这有效地执行了该命令

do ffmpeg -i "video.mp4" -vf "movie=logo.png [watermark];\ 
 [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "video.mp4-watermarked.mp4"; 

最后的位 - video.mp4-watermarked.mp4 是我的问题。我希望它是 video-watermarked.mp4。

我怎样才能做到这一点 ?

答案1

如果您使用 bash,请尝试使用${i%%.mp4}

对于你的例子来说,那将是:

for i in *.mp4; 
do ffmpeg -i "${i}" -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "${i%%.mp4}-watermarked.mp4"; 
done;

还有许多其他操作可能,你可能想在手册页中查找的术语是参数扩展

相关内容