在多个线程上的avconv


9

是否可以在多个处理器或线程上运行作业以加速avconv?
是否有正在进行的功能,如果我不知道为什么?

Answers:


11

您使用avconv 的-threads选项。最安全的设置是:

 -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要点:

  1. 仅当所选编解码器支持多线程时,此设置才有效
  2. 可以为单个流设置线程计数,而不是简单地尝试全局线程设置

1
如果您有相反的出处,请纠正我,但如果没有另外指定,我的印象是Avconv和avplay仍将-threads auto用作默认值。系统监视器似乎支持此操作。
年长者怪胎

1
我相信这取决于用于转码的编解码器。可以对其进行正式测试,这肯定会带来有趣的测试。我可以在线找到有关此问题的信息并没有特别帮助。另一个问题是所使用的FFmpeg版本,线程选项在旧版本中的使用方式有所不同……
andrew.46 2016

1
是。自从分叉以来,FFmpeg和avconv的发展方向有所不同。进一步的研究表明,如果您在命令行上使用预设之一,则-conthreads auto是avconv中的默认设置。
年长者怪胎

3

如果您要对许多文件进行音频转码,请考虑使用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.