首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持恒定的渲染速度(3倍)。

保持恒定的渲染速度(3倍)。
EN

Stack Overflow用户
提问于 2017-10-06 08:58:33
回答 1查看 6K关注 0票数 4

我在试着渲染一段视频。但我要把它渲染成恒定的速度。例子:

ffmpeg -stream_loop -1 -i 113856_video_0.ts -c:v拷贝-c:a aac -bufsize 3600k -maxrate 1800 k -rtbufsize 15 m -metadata comment="screen113856“-preset超快-g 50 -r 4 -sc_threshold 0 -crf 0 -threads 1 out.mp4

这个ffmpeg会把视频渲染得很好,像这样放出来

frame=77590 fps=113 q=-1.0 size= 596650 1.0 time=00:51:43.67比特率=1574.8kbit/s speed=10.51x

你可以看到speed=10.51x,它很快,但是它占用了我所有的CPU。如果我使用ffmpeg -re,它将呈现为speed=1x,这对CPU很好,但需要时间。我能以特定的速度渲染视频吗?

有一个使用cpulimit的选项。

-l 20 ffmpeg .

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 09:44:00

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

在您的命令中,由于只有音频被编码,我们将选择该流。如果要将此攻击集成到具有多个输出的现有筛选图中,请将其插入到可能最快地处理其输出的筛选链的末尾,以减少缓冲。

代码语言:javascript
复制
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秒或更长(如果预先过滤需要更多时间)。因此,黑客是将时间戳折叠到您想要的速度,然后再恢复它们。因为您想要3x,所以时间戳首先减少到1/3,然后在过滤后恢复。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46602042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档