0

我想为一些 bash 命令(convert.sh)制作一个“批处理”文件。我认为最好描述一下情况。我有 $#!^ 吨我想转换成 mp3 的 mp4 视频。ffmpeg -i /root/name\ of\ video.mp4 /name\ of\ video.mp3为每个视频转换它们会花费我不合理的时间。更不用说所有文件名都很长而且很复杂,所以有可能出现拼写错误。所以我想知道如何制作一个shell脚本(用于bash),它将获取每个带有扩展名的文件并将其一一.mp4转换为具有相同名称的文件。.mp3就像它转换一个然后当它完成它移动到下一个。我使用的是轻量级版本的 linux,所以任何第 3 部分软件都可能无法正常工作,所以我需要使用 ffmpeg ...

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

PS:我似乎无法让网站上的格式化语法正常工作,所以如果 somone 可以为我格式化,也许可以发布一个关于它如何工作的手册的链接,将不胜感激 =)

PPS:我知道应该向超级用户询问有关使用 ffmpeg 命令的问题,但是因为我对特定命令没有太多疑问,而且这更多地与编写 bash 文件有关,我认为这是正确的地方

4

2 回答 2

1

bashfor 循环应该立即为您完成:

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

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

于 2013-02-03T18:01:23.330 回答
0

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

这对于一次性脚本来说已经足够了,如果你想要一些可重用的东西,用另一个脚本来包装它,它接收到 dir 的路径,从中重新编码和调用其他部分的扩展:)

于 2013-02-03T18:06:56.250 回答