kon*_*ify 20 video cpu-usage ffmpeg video-encoding
我需要在后台降低一些 H.264 视频的帧速率,而不用尽我的 CPU(在 Linux 上)。不知何故-threads 1
根本没有效果:
ffmpeg -threads 1 -i 50fps.mp4 -filter:v fps=30 30fps.mp4
Run Code Online (Sandbox Code Playgroud)
流信息:
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg, progressive)
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D)
Run Code Online (Sandbox Code Playgroud)
所有核心仍处于最大状态。我怎样才能将其限制为只有一个核心?H.265 有一个特定于编码器的选项(pools=none
),我可以在这里使用类似的选项吗?
Gor*_*bić 30
您可以通过以下方式执行此操作taskset
:
taskset -c 0 ffmpeg ...
Run Code Online (Sandbox Code Playgroud)
运行仅限于第一个 CPU 核心(从 0 开始计数)的 ffmpeg 进程。或者例如,在第一个和第三个核心上运行它:
taskset -c 0,2 ffmpeg ...
Run Code Online (Sandbox Code Playgroud)
Gya*_*yan 15
视频编码线程由输出设置-threads
。
所以,
ffmpeg -i 50fps.mp4 -filter:v fps=30 -threads:v 1 30fps.mp4
Run Code Online (Sandbox Code Playgroud)
小智 9
目的是为了防止ffmpeg在后台占用CPU而导致其他软件运行不良吗?
在这种情况下,我建议以更高的性能运行它:
nice -n 19 ffmpeg -i 50fps.mp4 -filter:v fps=30 30fps.mp4
Run Code Online (Sandbox Code Playgroud)
这将允许调度程序最小化 ffmpeg 的优先级,并在任何其他进程需要 CPU 的情况下立即抢占它,并且仍然允许您利用所有核心尽可能快地进行编码。
归档时间: |
|
查看次数: |
15407 次 |
最近记录: |