在管道工地工作。我在linux专用服务器上通过ffmpeg运行视频以转换为mp4。
服务器规格:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 3491.749
BogoMIPS: 6983.49
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Run Code Online (Sandbox Code Playgroud)
测试期间的问题是,即使一次只做 4-5 个,服务器负载也会飙升至平均 36 个左右。这只是一个人。我想当它打开时,很多人会同时上传。
似乎ffmpeg试图使用每次转换的所有可用资源。
我听说有一个 -threads 设置可以更改,但我找不到它。我有一个 8 cpu 服务器。它仅用于转换,所以我听说最好的设置是 2 到 4。我可以测试一下。
但是如何更改此设置?我在网上看到的所有内容都讨论了此设置,但没有讨论更改它的步骤。
den*_*llo 19
您想要的选项标志真的很简单-threads,您可以像这样使用它(仅用于一个线程):
ffmpeg -i somefile.wmv -c:a libfdk_aac -c:v libx264 -threads 1 transcoded.mp4
Run Code Online (Sandbox Code Playgroud)
但是,有很多微妙之处会增加您的服务器负载和操作时间,例如重新缩放、应用过滤器和最终帧质量/帧速率 - 更不用说某些 VM 架构实际上读取和写入所有内容两次(一次本机并且几乎一次!!!)
以下是一些加快速度的提示:
-threads 0无论您做什么,都要让您的用户了解转码过程,因为这需要时间。(IJTT)
[编辑命令以反映 LordNeckbeard 的评论]