【问题标题】:"batch" files in bashbash 中的“批处理”文件
【发布时间】:2013-01-18 11:37:55
【问题描述】:

我想为一些 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 文件有关,我认为这是正确的地方

【问题讨论】:

  • 编辑/发布页面的侧边栏中有格式说明。您还可以通过将鼠标悬停在工具上来获取帮助文本。
  • 似乎您还没有对 shell 脚本进行基本介绍。尝试谷歌搜索“bash 脚本教程”
  • @BjørneMalmanger 看到 iv 尝试过那种东西,但我能找到的只是制作目录和移动文件的东西.....
  • 阅读tldp.org/LDP/abs/html(确实有不完善之处,但会教你很多);还可以了解at、batch、crontab、nohup、screen .... 命令
  • @BasileStarynkevitch 谢谢我检查一下 =)

标签: linux bash shell ffmpeg file-extension


【解决方案1】:

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 命令行选项,所以我只是复制了您帖子中的内容。

【讨论】:

  • 快到了……它给了我一个问题,名字中有sapces……说/root/asr143: no such file or directory
  • @Konner - 我在编辑中添加了一些 "" 应该可以解决该问题。
  • 非常好...由于某种原因,它给了我 -o 选项的问题,所以我删除了它,现在我正在实现无缝且无痛的转换 =) 非常感谢您及时且乐于助人的回应 =)
  • 抱歉,不知道 -o 是从哪里来的。快速浏览一下 ffmpeg 文档说你不需要那个。
  • 你可以用basename代替parameter expansion。
【解决方案2】:

1) 使用查找:

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

2) my_recode_script.sh - 见this question 这样您就可以轻松更改输出文件名的扩展名

剩下的就是琐碎的脚本工作:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多