批处理到 Bash 脚本

批处理到 Bash 脚本

能否获得一些帮助,将此批处理脚本转换为 shell 脚本?我不知道如何使第二部分工作,我是否只需将第一部分通过管道传输到第二部分,而不是使用括号?(并更改内容%%a):

echo off
for %%a in ("*.aac") do (
  ffmpeg -i "%%a" -an -vcodec copy "%%~na.jpg"
  "ffmpeg.exe" -loop 1 -i  "%%~na.jpg" -i "%%a" -c:v libx264 -preset veryslow -tune stillimage -crf 18 -pix_fmt yuv420p -c:a aac -shortest -b:a 192k -shortest "%%~na.mp4" )
pause;

答案1

不确定脚本的目的是什么,但这个解决方案应该有效:

for file in *.aac; do
    ffmpeg -i "$file" -an -vcodec copy "${file%aac}jpg"
    ffmpeg -loop 1 -i  "${file%aac}jpg" -i "$file" -c:v libx264 -preset veryslow -tune stillimage -crf 18 -pix_fmt yuv420p -c:a aac -shortest -b:a 192k -shortest "${file%aac}mp4"
done

我替换了:

  • %%a通过$fileshell 变量;
  • %%~na这是通过以下方式删除文件扩展名${file%aac}
  • ffmpeg.exeffmpeg命令。

相关内容