视频转换后如何命名输出文件与输入文件相同但扩展名不同?

how to name the output file same as input file but different extension after video conversion?

我正在使用这一行将 mp4 文件批量转换为 webm 文件。对于所有 mp4 文件,我需要输出文件具有相同的名称,但扩展名为 .webm。例如,如果我有 video1.mp4 和 video2.mp4,那么在转换后我需要两个文件,即 video1.webm 和 video2.webm。我如何使用 bash 脚本实现此目的?

for f in *.mp4; do ffmpeg -i "$f" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "$f".webm;  done

以上代码会将输出文件更改为video1.mp4.webm。谢谢!

据我所知,link 就是您正在寻找的答案。尽管您可能不需要删除路径的部分,因为您只是 运行 文件夹中的这个。

尝试:

for f in *.mp4; do ffmpeg -i "$f" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "${f%.mp4}".webm; done

How do I remove the file suffix and path portion from a path string in Bash?

编辑:添加示例;更新后我发现其他人也给出了相同的更新。

试试这个...

for f in *.mp4; 
do 
    ffmpeg -i "$f" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "${f%.mp4}".webm;  
done