FFmpeg使用的实际线程数与我使用-threads参数传递的数字不对齐.
我在我的MacBook Air(有4个内核)和一个拥有2个内核的VM上运行测试.两台机器使用的线程数一致.
使用单个线程返回我期望的内容:使用1个线程.
$ ffmpeg -threads 1 -i clip.mp4 -threads 1 -acodec libfdk_aac -vcodec libx264 -b:v 200k -vf scale=200:-2 -y clip-200.mp4
$ cat /proc/$(pgrep ffmpeg)/status | grep Threads
Threads: 1
Run Code Online (Sandbox Code Playgroud)
如果我-threads在输入上设置选项,它会增加用于3的线程数.这对我来说有点意义,因为输入将使用2个线程,输出将使用单个线程.
$ ffmpeg -threads 2 -i clip.mp4 -threads 1 -acodec libfdk_aac -vcodec libx264 -b:v 200k -vf scale=200:-2 -y clip-200.mp4
$ cat /proc/$(pgrep ffmpeg)/status | grep Threads
Threads: 3
Run Code Online (Sandbox Code Playgroud)
这是我开始感到困惑的地方.相反,我将输入保留-threads为1并将输出设置-threads为2,它使用8个线程(不像我期望的那样3个).
$ ffmpeg -threads 1 -i clip.mp4 -threads 2 -acodec libfdk_aac -vcodec libx264 …Run Code Online (Sandbox Code Playgroud) ffmpeg ×1