performance - ffmpeg 游戏中时光倒流非常慢

标签 performance ffmpeg timelapse

我在用着

ffmpeg -i IMG_5299.MOV -c:v libx264 -crf 20 -r 60 -filter:v "setpts=0.0015*PTS" -an IMG_5299-speedup.mkv

从 H.265 4K 60fps 视频中创建 600 倍的延时摄影。我只想要ffmpeg选择每 600 帧并将其组合成一个新的 60fps 视频。没有插值,什么都没有。尽管如此,我在最近的 i5-7600T CPU 上只能获得 0.2 fps,同时在没有使用加速的情况下转换相同的视频
ffmpeg -i IMG_5299.MOV -c:v libx264 -crf 20 -an IMG_5299-2.mkv

给我5 fps。那么,为什么将视频加速比仅仅转换慢 25 倍呢?它是否对 600 帧中的每一帧进行任何漂亮的插值?

编辑:这是我在编码几分钟后得到的状态行:
frame=  447 fps=0.2 q=28.0 size=   68639kB time=00:00:06.56 bitrate=85611.1kbits/s dup=0 drop=147650 speed=0.00233x

最佳答案

这很慢,因为您要从每 666 帧中选择一个。在编码一帧之前,所有这 666 帧都必须进行解码和过滤。假设您的系统可以每秒 333 帧进行解码,那么您的编码速度上限为 0.5 fps。

您可以使用以下方式分析您的解码吞吐量

ffmpeg -i IMG_5299.MOV -an -f null -

您可以通过仅从 MOV 中解复用关键帧数据包来加快编码速度。
ffmpeg -discard nokey -i IMG_5299.MOV -c:v libx264 -crf 20 -r 60 -vf "setpts=0.0015*PTS" -an IMG_5299-speedup.mkv

关于performance - ffmpeg 游戏中时光倒流非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52469754/

相关文章:

mysql - 计算一段时间内 MySQL 中某个条件被触发的次数

java - LWJGL - 循环卡住的原因?

video - 使用 FFmpeg 拼接 360 度鱼眼视频

android - FFmpeg Android 连接。 "–safe 0"是无效参数

audio - FFMPEG 修剪和连接 mp3 无需重新编码

ffmpeg - 在 Windows 中重命名图像文件以进行延时摄影

python - 脚本没有阻塞

Postgresql索引seq扫描1亿行

list - 在 Dart 中, `List.unmodifiable` 是创建一个不可修改的 View ,还是一个全新的独立列表?

C# 2.0 执行时间计时器