首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量转换文件使用ffmpeg和查找-exec和并行

问批量转换文件使用ffmpeg和查找-exec和并行
EN

Stack Overflow用户
提问于 2021-02-01 07:29:07
回答 1查看 181关注 0票数 0

从另一篇堆栈交流帖子中,我才知道我可以批量转换原始文件名完整的媒体文件,只需使用以下命令更改文件扩展名

代码语言:javascript
复制
find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i $0 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 ${0/mp4/mp3}' {} \;

由于现在大多数计算机都有多核,我如何修改上面的命令,这样我就可以在find的-exec部分使用所有4个核心,这样我就可以同时转换4个媒体文件?

我知道GNU并行可以做类似的事情,但我不知道如何将它们组合到一个命令中。

提前感谢

哈夫

EN

回答 1

Stack Overflow用户

发布于 2021-02-01 22:22:46

您可以将以空值结尾的文件名传递给parallel,如下所示:

代码语言:javascript
复制
find . -name \*.mp4 -print0 | parallel -0 ...

您可以通过{}访问parallel中的参数,并且可以使用{.}获取不带扩展名的文件名,因此您需要:

代码语言:javascript
复制
find . -name \*.mp4 -print0 | parallel -0 ffmpeg -i {} ... {.}.mp3

先用parallel --dry-run试一下,看看看起来是否正确。默认情况下,它将使用所有内核。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65985342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档