ffmpeg 批处理在名称中保留旧文件类型

ffmpeg batch retains old filetype in name

我正在使用以下 ffmpeg 脚本将文件夹中的所有 .mp4 文件转换为 .webm。

for %%A IN (*.mp4) DO ffmpeg -i "%%A" -c:v libvpx -crf 4 -b:v 3M -c:a libvorbis "%%A.webm"

我正在努力让它从 "xxx.mp4" 变为 "xxx.webm"

然而,当我 运行 脚本时,文件名从 "xxx.mp4" 变为 "xxx.mp4.webm"

非常感谢任何建议。

使用 %%~nA.webm 到 select 文件名的名称部分。

从提示或文档中查看 for /?

要在webm中递归转换嵌套文件夹中的所有mp4视频文件,你可以试试这个命令:

find '~/Video/' -iname '*.mp4' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/webm/"; ffmpeg -i "{}" -c:v libvpx -crf 4 -b:v 3M -c:a libvorbis "$D/webm/${B%.*}.webm"' \;

它将在包含 mp4 视频文件的文件夹中创建一个名为 "webm" 的文件夹,并且在 "webm" 文件夹中,它将保存相关的 webm 文件,而不保留名称中的旧文件扩展名.