mac终端ffmpeg批处理递归转换保留目录结构

时间:2020-04-09 18:03:39

标签: macos ffmpeg terminal

我在Mac上使用ffmpeg将.flv批量转换为.mp4文件。我试图在当前目录的子目录中查找所有文件,并将新文件保存在同一目录中。

例如以以下内容开头:

subdirectory1/video1.flv
subdirectory1/video2.flv
subdirectory2/video1.flv

结尾
subdirectory1/video1.mp4
subdirectory1/video2.mp4
subdirectory2/video1.mp4

我已经走了这么远,但不知道如何使用保留的递归目录进行保存

for i in  `find -name . "*.flv"`; do ffmpeg -i "$i" "${i%.*}.mp4"; done

1 个答案:

答案 0 :(得分:0)

也许有更好的方法,但这最终对我有用。我不得不重命名文件和目录以删除空间并重新执行find命令。 xargs包含试图解释空格,但是没有用

所以我用这个从目录中删除了空格:

for f in *; do mv "$f" `echo $f | tr ' ' '_'`; done

并以此删除文件名中的空格

find . -type f -name "* *.flv" -exec bash -c 'mv "$0" "${0// /_}"' {} \;

然后此命令以递归方式重新编码我的flv文件并保存在其目录中

for i in `find . -name "*.flv" -print0| xargs -0`; do ffmpeg -i "$i" -c:v libx264 -f mp4 "${i%.*}.mp4"; done