Performance 保持ffmpeg渲染为恒定速度(3倍)
我正在尝试渲染一个视频。但我想把它渲染成恒定的速度。 例如: ffmpeg-stream_loop-1-i 113856_video_0.ts-c:v copy-c:a aac-bufsize 3600k-maxrate 1800k-rtbufsize 15M-metadata comment=“screen113856”-预设超快-g50-r4-sc_阈值0-crf 0-线程1 out.mp4 这个ffmpeg可以很好地渲染视频,像这样输出 帧=77590 fps=113 q=-1.0大小=596650kB时间=00:51:43.67比特率=1574.8kbits/s速度=10.51x 你可以看到速度=10.51x,速度很快,但占用了我所有的CPU。如果我使用ffmpeg-re,它的渲染速度为1x,对CPU很好,但需要时间。我可以以特定速度渲染视频吗 有一个选项可以使用cpulimit cpulimit-L20FFMPEG 几乎解决了我的问题,但: -有时它不工作,ffmpeg仍然需要100%的CPUPerformance 保持ffmpeg渲染为恒定速度(3倍),performance,video,ffmpeg,render,Performance,Video,Ffmpeg,Render,我正在尝试渲染一个视频。但我想把它渲染成恒定的速度。 例如: ffmpeg-stream_loop-1-i 113856_video_0.ts-c:v copy-c:a aac-bufsize 3600k-maxrate 1800k-rtbufsize 15M-metadata comment=“screen113856”-预设超快-g50-r4-sc_阈值0-crf 0-线程1 out.mp4 这个ffmpeg可以很好地渲染视频,像这样输出 帧=77590 fps=113 q=-1.0大小=5
-对于每个视频,我必须设置CPU数量限制(-l20,30),以获得特定的速度。我想自动完成这项工作。这里有一个基于过滤器的粗糙黑客程序来模拟这种行为。要使用它,必须至少对一个音频/视频流进行编码 在您的命令中,由于只对音频进行编码,我们将选择该流。如果要将此攻击集成到具有多个输出的现有filtergraph中,请将其插入可能最快处理其输出的filterchain末尾,以减少缓冲
ffmpeg -stream_loop -1 -i 113856_video_0.ts \
-af asetpts=PTS/3,arealtime,asetpts=PTS*3
-c:v copy -c:a aac -metadata comment="screen113856" -threads 1 out.mp4
FFmpeg提供了一组过滤器:realtime
(用于视频)和arealtime
(用于音频),用于限制帧的实时通过以进一步过滤。在实践中,这意味着时间戳间隔1秒的帧被传送间隔1秒或更长(如果先前的过滤需要更多时间)。因此,黑客就是把时间戳压缩到你想要的速度,然后再恢复它们。由于您需要3倍,时间戳首先减少到1/3,然后在过滤器之后恢复
这只会减慢处理速度,而不会加快处理速度