当前位置: 首页 > 知识库问答 >
问题:

保持ffmpeg渲染为恒定速度(3倍)

越昊穹
2023-03-14

我正在尝试渲染视频。但我想以恒定速度渲染它。示例:

ffmpeg-stream_loop-1113856_video_0.ts-c: v复制-c: a aac-bufsize3600k-maxrate1800k-rtbufsize15M-元数据注释="屏幕113856"-预设超快-g 50-r 4-sc_threshold0-crf 0-线程1out.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

cpulimited-l 20 ffmpeg...

几乎解决了我的情况,但是:-有时它不起作用,ffmpeg仍然需要100%CPU-对于每个视频,我必须设置CPU限制的数量,(-l 20,30)以获得特定的速度。我想自动执行。

共有1个答案

诸龙野
2023-03-14

下面是一个基于过滤器的粗糙黑客,用来模拟这种行为。要使用它,至少必须对一个音频/视频流进行编码。

在您的命令中,由于只有音频被编码,我们将加入该流。如果你想将这种攻击集成到一个已有的具有多个输出的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,然后在过滤器之后恢复。

这只能减慢处理速度,而不能加快处理速度。

 类似资料:
  • 问题内容: 我的下拉列表中有很多复选框,因此此容器具有滚动功能。但是,当我单击任何复选框时,它会自行选择\取消选择,然后更改状态。 因此,问题在于重新渲染后,此容器又回到了顶部。是否可以在渲染后保持容器的滚动而不将其保存到状态? 问题答案: 您可以在提交阶段之前保存滚动位置的“快照”。 getSnapshotBeforeUpdate()显示您正在寻找的种类。 该文档示例将当前滚动位置保存在生命周期

  • 问题内容: 我们正在构建一个Angular应用程序,并且试图弄清楚如何获得渲染各种页面所需时间的一些基准。我在这里已读过有关内容,但这似乎仅对非单页应用程序有用,因为当我导航至应用程序中的新视图时,计时编号不会改变。 理想情况下,我们将能够插入一些代码来获取各种视图的渲染时间并将其发布到我们的Big Query服务中。 关于如何在Angular应用中获取视图的时间信息的任何想法? 编辑: 更具体地

  • 只是一个简单的问题。 让我们将这段代码作为IE: 是 NgIf 内的内容呈现然后从页面中隐藏,还是角度“知道”此 div 不会显示,因此甚至不渲染其中的内容?

  • 本文向大家介绍什么渲染劫持?相关面试题,主要包含被问及什么渲染劫持?时的应答技巧和注意事项,需要的朋友参考一下 我的理解: 什么是渲染劫持?来分析一下这个词汇。渲染主要指的是组件中的render函数return的JSX语法部分。劫持呢?如果我们在组件内部去修改JSX语法,这不叫劫持,这是分内的事情。劫持指的是在本不应该修改到JSX语法的地方修改了它。怎么实现呢?一般都是通过继承被劫持的组件。 HO

  • 有时网页太复杂,无法找到API请求。现在是时候满足PhantomJS的力量了。 要使用PhantomJS,你应该有PhantomJS 安装。如果你正在使用all模式运行pyspider,那么如果可以在中删除,则启用PhantomJS PATH。 确保phantomjs正在运行 $ pyspider phantomjs 如果输出是,继续本教程的其余部分 Web server running on

  • 为了保障组件的性能, 我们有的时候会从组件渲染的角度出发. 更干净的render函数? 这个概念可能会有点让人疑惑. 其实在这里干净是指我们在shouldComponentUpdate这个生命周期函数里面去做浅比较, 从而避免不必要的渲染. 关于上面的干净渲染, 现有的一些实现包括React.PureComponent, PureRenderMixin, recompose/pure 等等. 第一