“batch” files in bash
我想创建一个"批处理"文件,比如说一些bash命令(convert.sh)。我认为最好描述一下情况。我有一个美元!^我要转换成MP3格式的大量MP4视频。使用ffmpeg -i /root/name\ of\ video.mp4 /name\ of\ video.mp3转换每一个视频需要花费我不合理的时间。更不用说所有的文件名都很长,而且很复杂,所以可能会出现打字错误。所以我想知道如何制作一个shell脚本(对于bash),它将获取扩展名为.mp4的每个文件,并逐个将其转换为同名的.mp3。就像在它转换一个,然后当它完成时,它会移动到下一个。我使用的是Linux的轻量级版本,所以任何第三部分的软件都可能无法工作,所以我需要使用ffmpeg…
非常感谢您提供的任何帮助
PS:我似乎无法让网站上的格式sytax正常工作,所以如果somone可以为我格式化它,并可能发布一个链接到一个关于它如何工作的手册,那将是非常感谢的=)
PPS:我知道关于使用ffmpeg命令的问题应该在superuser上提出,但是由于我对特定命令没有太多的问题,这与编写bash文件的脚本更相关,我认为这是正确的地方。
- 在编辑/发布页面的侧边栏中有格式化说明。您还可以通过将鼠标悬停在工具上来获取帮助文本。
- 似乎您还没有对shell脚本进行基本的介绍。尝试谷歌搜索"bash脚本教程"
- @bj&248;rnemalmanager see iv尝试过类似的方法,但我所能找到的只是制作目录和移动文件的东西……
- 阅读tldp.org/ldp/abs/html(它确实有缺陷,但会教你很多);还可以了解at、batch、crontab、nohup、screen…命令
- @巴兹勒斯特兰凯维奇谢谢,我来看看=)
- 另请参阅《ffmpeg MP3编码指南》。
一个bashfor循环应该在任何时候为您完成:
1 2 3 4 5 6
| SRC_DIR=/root
DST_DIR=/somewhereelse
for FILE in ${SRC_DIR}/*.mp4
do
ffmpeg -i"${FILE}""${DST_DIR}/$(basename "${FILE}" .mp4).mp3"
done |
抱歉-我不知道ffmpeg命令行选项,所以我只是准确地复制了你的文章中的内容。
- 快到了…这给了我一个名字里有智慧的问题…/root/asr143: no such file or directory说
- @康纳-我在一个应该解决这个问题的编辑中添加了一些""。
- 很不错的。。。出于某种原因,它给了我一个关于-o选项的问题,所以我删除了它,现在正在进行一个无缝的、无痛苦的转换=)非常感谢您的提示和有用的响应=)
- 对不起,不知道那个-o是从哪里来的。快速浏览一下ffmpeg文档,就会发现你不需要这些。
- 我说得太早了(这不是一件美妙的事情),它试图命名所有没有全名的文件".mp3"
- 隐马尔可夫模型。。。我想在里面添加一个echo并开始调试。祝你好运!
- 您可以使用参数扩展来代替basename。
1)使用查找:
1
| find . -name \*.mp4 | xargs ./my_recode_script.sh |
2)我的"重新编码"script.sh-看到这个问题因此,您可以轻松地更改输出文件名的扩展名
剩下的就是简单的脚本编写工作:
1
| ffmpeg -i $name $new_name # in my_recode_script.sh after changing extension |
这对于一次性脚本来说已经足够了,如果您想要一些可重用的东西,请用另一个脚本包装它,该脚本接收到dir的路径,从中重新编码和调用其他部分的扩展名:)