是否可以在多个处理器或线程上运行作业以加快 avconv 的速度?
是否有正在开发的功能?如果没有,我想知道为什么?
答案1
你正在寻找-线程avconv 的选项。最安全的设置是:
-threads auto
但如果你想尝试一下,也可以在那里设置一个整数。现代 FFmpeg(现在是 Ubuntu 的标准)将其设置为auto
默认情况下如“ffmpeg-all”手册页的此部分所示:
threads integer (decoding/encoding,video)
Set the number of threads to be used, in case the selected
codec implementation supports multi-threading.
Possible values:
auto, 0
automatically select the number of threads to set
Default value is auto.
注意2个要点:
- 此设置仅在所选编解码器支持多线程时才有效
- 可以为各个流设置线程数,而不是简单地尝试全局线程设置
答案2
如果您要对大量文件进行音频转码,请考虑使用 GNU Parallel。它将以文件列表作为输入,并根据系统中的核心数量并行处理它们。例如,这是一个 bash 示例,它将使用 ffmpeg 将音乐并行转换为 opus 音频格式。
find ./* -depth -type f -name \*.ogg -o -name \*.flac -o -name \*.m4a -o -name \*.mp3 -o -name \*.ogg | parallel -j+0 --gnu nice -n 19 ffmpeg -i "{}" -acodec libopus "{.}.opus" -loglevel quiet