在Bash中的“批处理”文件。

14 浏览
0 Comments

在Bash中的“批处理”文件。

我想制作一个“批处理”文件,用于某些bash命令(convert.sh)。我认为最好描述一下情况。我有大量的mp4视频,我想将它们转换为mp3格式。对于每个单独的视频,使用ffmpeg -i /root/name\\ of\\ video.mp4 /name\\ of\\ video.mp3进行转换将需要我不合理的时间。更不用说所有文件名都很长且复杂,因此可能会出现打字错误。因此,我想知道如何制作一个shell脚本(用于bash),可以逐个将具有扩展名.mp4的每个文件转换为相同名称的.mp3。换句话说,它将一个文件转换完成后,再转换下一个文件。我正在使用轻量级的Linux版本,因此任何第三方软件都可能无法使用,因此我需要使用ffmpeg…

非常感谢您提供的任何帮助。

PS:我似乎无法让网站上的格式语法正常工作,所以如果有人可以为我格式化这个内容,并可能发布一个有关其工作原理的手册链接,那就太感激了=)

PPS:我理解有关使用ffmpeg命令的问题应该在superuser上提出,但鉴于我不太了解任何有关具体命令的问题,并且这与编写bash文件的脚本相关,我认为这是正确的地方

admin 更改状态以发布 2023年5月21日
0
0 Comments

1) 使用查找:

find . -name \*.mp4 | xargs ./my_recode_script.sh

2) my_recode_script.sh - 查看这个问题
这样你就可以轻松地更改输出文件名的扩展名

其余的都是简单的脚本任务:

ffmpeg -i $name $new_name # in my_recode_script.sh after changing extension

如果你想要可重用的代码,可以将其包装到另一个脚本中,该脚本可以接收目录路径,从某个扩展名到另一个扩展名并调用其他部分:)

0
0 Comments

一个bash for循环可以很快地为您做到这一点:

SRC_DIR=/root
DST_DIR=/somewhereelse
for FILE in ${SRC_DIR}/*.mp4
do
    ffmpeg -i "${FILE}" "${DST_DIR}/$(basename \"${FILE}\" .mp4).mp3"
done

抱歉 - 我不知道ffmpeg的命令行选项,所以我只是复制了您帖子中的内容。

0