能否获得一些帮助,将此批处理脚本转换为 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
通过$file
shell 变量;%%~na
这是通过以下方式删除文件扩展名${file%aac}
;ffmpeg.exe
按ffmpeg
命令。