我只想评论与该问题非常相似的问题的答案,但我的代表人数不足。我正在寻找一种更改此代码行的方法:
for i in *.mkv; do ffmpeg -i "$i" "${i%.*}.mp4"; done
这样它就包含.avi文件,并可以搜索嵌套文件夹。我希望能够定位目标/Videos
并将脚本自动遍历到文件夹树中/Videos/2016/January
,转换该文件夹中包含的所有视频文件,然后对它们执行相同操作/Videos/2016/February
,依此类推。
提前致谢。
(信贷的代码上面一行去LordNeckBeard,从这个帖子。)
使用LordNeckBeard对的引用find
,我提出了以下解决方案:
find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4' \;
完全按照我的预期进行了测试和工作,因此它目前正在整个库中运行。
如果要为转换后的文件提供与原始文件不同的名称,请参见“参数扩展”。
如果希望破坏性地转换所有文件,请使用以下命令格外小心:
find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4 && rm "{}"' \;
注意:上面的命令不是安全的,并且在转换过程完成之前已删除了一些文件,这意味着我现在已经丢失了这些文件(感谢上帝的备份)。我对一次性文件进行了测试,并确保在开始此过程之前,我已对数据进行了完整的备份。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句