批量转换视频的Shell脚本

批量转换视频的Shell脚本

我正在尝试编写一个脚本,与 HandbrakeCli 一起使用,将 .mkv 文件转换为与 XBOX 360 兼容的 mp4 文件。

#!/bin/bash
for f in "$@"
do
    echo "$f"
    HandbrakeCli -i "$f" -o ~/Movies/Handbrake/"${f%.*}.mp4" --preset "Normal" --mixdown "stereo" --subtitle "1" --width 720 --keep-display-aspect
done

问题是目标文件名(根据 HandbrakeCli 的输出)包含输入文件的完整路径。自然我只对不带扩展名的文件名感兴趣,因为我添加了 .mp4。

我不习惯使用 shell 脚本,因此非常感谢您的帮助!

答案1

首先删除路径:

outf=${f##*/}

然后更改扩展名:

outf=${outf%.*}.mp4

(当然,不一定按这个顺序。)

答案2

由于您知道输入文件的扩展名,因此您可以说

new=~/Movies/Handbrake/"$(basename "$f" .mkv)".mp4

相关内容